通常如何从控件中取消连接事件?
Posted
技术标签:
【中文标题】通常如何从控件中取消连接事件?【英文标题】:How to unwire event from control generically? 【发布时间】:2021-07-28 02:17:39 【问题描述】:我需要暂时从我的 NumericUpDown 控件中取消连接一些事件,因为我正在以编程方式更改它们并且不想触发 ValueChanged 事件。代码应如下所示:
private void UnwireNUD (NumericUpDown nud)
nud.ValueChanged -= numericUpDown_ValueChanged;
numericUpDown_ValueChanged 部分是我不知道如何引用的部分。有没有人这样做过并且不介意提供一些帮助?
【问题讨论】:
【参考方案1】:在 C# 中,事件委托是隐藏信息。如果你说“我的 NumericUpDown”,你控制它的源代码吗?如果没有,你只能通过反射来做到这一点,你不应该这样做。唯一的其他选择是以一种或另一种方式更改订阅者,例如使用标志并忽略方法调用,或者使用具有某种抑制逻辑的包装器对象。
一般来说,假设所有订阅者都对该事件不感兴趣似乎很危险。
【讨论】:
所有订阅者,在这个特定的实例中,实际上都是 NumericUpDown 控件。我希望通过通用调用来引用它们,但为了简单起见,我继续硬编码了它们的名称。谢谢。以上是关于通常如何从控件中取消连接事件?的主要内容,如果未能解决你的问题,请参考以下文章
隐藏/取消隐藏基于控件标签的主窗体上的控件,在连续子窗体中使用当前事件
如何从 jQuery 中的“滚动”事件中取消绑定所有先前添加的事件? [复制]