Вы можете использовать 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);
Кроме того, если вы можете объединить другие планы вместе, например, если что-то может быть "сделано ", когда срабатывает один набор событий, или также когда срабатывает другой набор событий:
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);