如何获取控件的设置事件

本文关键字:控件 设置 事件 获取 何获取 | 更新日期: 2023-09-27 18:36:42

可以通过

C# 代码获取设置为 Control 的方法/委托列表? 让我更好地解释一下。例如。

假设一些定义如下:

foo.Click += (a, b) => { ... }
//..
foo.Click += (A,B) => { ... }

还有一个方法:

var baa = foo.GetEvents("Click");

返回

baa[0]指向(a, b) => { ... }

baa[1]指向(A,B) => { ... }

我的风景:我为循环中的某些控件创建动态事件并添加动态事件。我希望根据布尔值来控制索引一的事件,将使用控件删除。单击 -= baa[1] 或类似的东西。我希望这对你来说很清楚。提前谢谢。

如何获取控件的设置事件

不,没有办法做到这一点。事件的重点是隐藏支持委托字段(好吧,严格来说,可能根本没有支持字段),以便您只能订阅或取消订阅事件。

这样做的原因是订阅者(在观察者模式中也称为"观察者")不应该知道其他订阅者,更不用说取消订阅了。如果您的邻居取消了您最喜欢的杂志的订阅,您会怎么说?;)


编辑:实际上,有一种方法可以做到这一点,但它是丑陋和不可靠的。假设您知道类如何存储其事件处理程序(通常是委托字段,但在 Windows 窗体中有所不同),则可以使用私有成员的反射来检索事件处理程序。