Mar*_*the 15 .net c# system.reactive
作为一个概念证明,我想在选中一个复选框并在文本框中按下一个键(按任意顺序)后,在文本框中写"完成" .我希望这段代码可以处理这个问题,但只要事件发生就会写完Done.谢谢你的帮助.
var seq = Observable.FromEvent<EventArgs>(this.checkBox, "CheckedChanged")
.Merge(Observable.FromEvent<KeyPressEventArgs>(this.textBox, "KeyPress"));
seq.Subscribe((unused) => this.resultTextBox.Text = "Done");
Run Code Online (Sandbox Code Playgroud)
Ric*_*ein 25
你可以使用Observable.就像这样(我为这个例子添加了一个额外的CheckBox):
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);
Run Code Online (Sandbox Code Playgroud)
此外,如果您可以一起加入其他计划,例如,当一组事件触发时,或者当另一组事件触发时,事情可以"完成":
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5546 次 |
| 最近记录: |