如何获取控件的设置事件
本文关键字:控件 设置 事件 获取 何获取 | 更新日期: 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 窗体中有所不同),则可以使用私有成员的反射来检索事件处理程序。