您可以使用Observable.When,如下所示(我为此示例添加了一个额外的复选框):
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);
此外,如果您可以将其他计划组合在一起,例如当一个事件集触发时可以“完成”,或者当另一个事件集也触发时也可以“完成”:
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);