无扩展的.NET(RX):采取行动,一旦所有的事件都完成有的、行动、事件、NET

2023-09-02 02:07:36 作者:不识抬举.

由于概念证明,我想在文本框中写完成的在的复选框被选中,并一键一直pssed在文本框中$ P $(在任订购)。我希望这个code来处理这个问题,但它写就这两种情况下发生的完成。感谢您的帮助。

 无功序列= Observable.FromEvent< EventArgs的>(this.checkBox的CheckedChanged)
   .Merge(Observable.FromEvent<关键pressEventArgs>(this.textBox,关键preSS));

seq.Subscribe((未使用)=> this.resultTextBox.Text =完成);
 

解决方案

您可以使用Observable.When像这样(我已经添加了一个额外的复选框本示例):

  VAR checkChanged = Observable.FromEvent< EventArgs的>(this.checkBox的CheckedChanged);
VAR check1Changed = Observable.FromEvent< EventArgs的>(this.checkBox1的CheckedChanged);
VAR键preSS = Observable.FromEvent<关键pressEventArgs>(this.textBox,关键preSS);

VAR计划1 = checkChanged
            。而(check1Changed)。而(键preSS)
            。然后((CC,CC1,KP)=>中。完成);

VAR当= Observable.When(计划1);

when.Subscribe((结果)=> this.resultTextBox.Text =结果);
 
卸载程序里面没.net framework2.0但安装时显示已安装

另外,如果你可以加入其他计划一起,例如,如果事情可以做当任一组事件触发,或者还当另一组事件触发:

  VAR checkChanged = Observable.FromEvent< EventArgs的>(this.checkBox的CheckedChanged);
VAR check1Changed = Observable.FromEvent< EventArgs的>(this.checkBox1的CheckedChanged);
VAR键preSS = Observable.FromEvent<关键pressEventArgs>(this.textBox,关键preSS);
VAR键preSS1 = Observable.FromEvent<关键pressEventArgs>(this.textBox1,关键preSS);

VAR计划1 = checkChanged.And(check1Changed)。而(键preSS)。然后((CC,CC1,KP)=>中完成的。);
VAR plan2 =键press.And(键preSS1)。然后((KP,KP1)=>中交替进行。);

VAR加入= Observable.When(计划1,plan2);
 

As a proof of concept, I want to write "Done" in a text box after a check box has been checked and a key has been pressed in a text box (in either order). I would expect this code to handle this, but it writes Done as soon as either event happens. Thanks for your help.

var seq = Observable.FromEvent<EventArgs>(this.checkBox, "CheckedChanged")
   .Merge(Observable.FromEvent<KeyPressEventArgs>(this.textBox, "KeyPress"));

seq.Subscribe((unused) => this.resultTextBox.Text = "Done");

解决方案

You can use Observable.When like so (I've added an additional CheckBox for this example):

var checkChanged  = Observable.FromEvent<EventArgs>(this.checkBox, "CheckedChanged");
var check1Changed = Observable.FromEvent<EventArgs>(this.checkBox1, "CheckedChanged");
var keyPress      = Observable.FromEvent<KeyPressEventArgs>(this.textBox, "KeyPress");

var plan1 = checkChanged
            .And(check1Changed).And(keyPress)
            .Then((cc, cc1, kp) => "Done.");

var when = Observable.When(plan1);

when.Subscribe((result) => this.resultTextBox.Text = result);

Also, if you can join other plans together, for example if things can be "done" when either one set of events fire, or also when another set of events fire:

var checkChanged  = Observable.FromEvent<EventArgs>(this.checkBox, "CheckedChanged");
var check1Changed = Observable.FromEvent<EventArgs>(this.checkBox1, "CheckedChanged");
var keyPress      = Observable.FromEvent<KeyPressEventArgs>(this.textBox, "KeyPress");
var keyPress1     = Observable.FromEvent<KeyPressEventArgs>(this.textBox1, "KeyPress");

var plan1 = checkChanged.And(check1Changed).And(keyPress).Then((cc, cc1, kp) => "Done.");
var plan2 = keyPress.And(keyPress1).Then((kp, kp1) => "Alternate done.");

var join = Observable.When(plan1, plan2);

 
精彩推荐
图片推荐