由于概念证明,我想在文本框中写完成的在的复选框被选中,并一键一直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 =结果);
另外,如果你可以加入其他计划一起,例如,如果事情可以做当任一组事件触发,或者还当另一组事件触发:
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);