点击按钮时如何触发执行已有的entry_TextChanged事件处理方法
实现方案
方案1:直接调用事件处理方法
事件处理方法本质就是普通类方法,你可以在按钮点击逻辑里手动调用它,传入对应参数即可:
private bool save = false; private void entry_TextChanged(object sender, TextChangedEventArgs e) { if (save == true) { // Do Something } } private void goto_Clicked(object sender, EventArgs e) { save = true; // entry就是你绑定了TextChanged事件的输入框实例 entry_TextChanged(entry, new TextChangedEventArgs(entry.OldText, entry.Text)); }
如果你的entry_TextChanged逻辑完全没有用到TextChangedEventArgs里的属性,可以简化传参:
entry_TextChanged(entry, null);
注意:如果你的逻辑用到了
e.OldText、e.NewText这类参数属性,一定要正确构造TextChangedEventArgs实例,不要传null,避免触发空引用异常。
方案2:提取公共逻辑(更推荐)
把复用的逻辑抽成独立方法,避免和事件参数耦合,后续维护成本更低:
private bool save = false; // 提取公共处理逻辑 private void CommonProcess() { // Do Something } private void entry_TextChanged(object sender, TextChangedEventArgs e) { if (save == true) { CommonProcess(); } } private void goto_Clicked(object sender, EventArgs e) { save = true; // 直接调用公共逻辑即可 CommonProcess(); }
内容的提问来源于stack exchange,提问作者Behzad Changizi
相关产品推荐
相关产品推荐

