我需要知道如何检查已分配的任何事件处理程序? (在快速监视)如何检查事件处理程序分配或不在QuickWatch
6
A
回答
4
我不知道如果我理解正确的问题,但我会给它一个镜头:
如何检查是否连接到一个事件
如果没有附加事件处理程序,则TestEvent
任何事件处理程序:TestEvent
将为空。如果一个处理器连接(单播委托)
_invocationList == 0
:粘贴下面的监视表达式字符串:
((System.Reflection.RuntimeMethodInfo)(((System.Delegate)(TestEvent))._methodBase)).Name
找出事件处理程序连接。
如果有多个处理程序连接(多播委托)
_invocationList > 0
:您需要通过
_invocationList
看,例如先检查一下连接方法:((System.Reflection.RuntimeMethodInfo)(((System.Delegate)(((object[])(((System.MulticastDelegate)(TestEvent))._invocationList))[0]))._methodBase)).Name
要检查其他附加的处理程序:改变索引到1,2等,或者只是展开
_invocationList
数组的每个元素。
可选择使用Name
财产只是一个处理程序方法的名称,你可以使用m_toString
场是方法签名。
在所有关于用您的事件名称替换TestEvent
的示例中。
[编辑]没有意识到你正在使用WPF。 WPF事件系统要复杂得多。
比方说,你有一个按钮和如何检查是否有任何处理器连接到MouseLeftButtonDown
事件:
- 打开QuickWhatch。
- 粘贴你按钮变量名称(比如说
button1
)。 - 深入了解基础类,直到找到
UIElement
。或者要快速将此((System.Windows.UIElement)(button1)).EventHandlersStore
粘贴到表达式输入。 - 找到并扩大属性
EventHandlersStore
。 - 展开
_entries
。 - 展开
_mapStore
。 - 展开
[MS.Utility....]
- 你会看到的
_entry0
,_entry1
名单,..._entry_n
。这些都是按钮处理程序分配的所有事件。 - 要了解分配了哪些处理程序,请进一步钻取特定条目
Value
=>_listStore
。 - 您将再次看到
_entry0
,_entry1
...的列表。这些都是附属于这个特殊事件的处理者。
相关问题
- 1. 如何检查事件处理程序分配或不
- 2. 检查GWT EventBus有一个事件处理程序或不
- 3. 如何检查在事件处理程序的条件
- 4. 如何在代码中为DataTemplate分配事件处理程序?
- 5. 如何在分配新处理程序时引发事件?
- 6. 德尔福:如何动态分配事件处理程序,而不覆盖现有的事件处理程序?
- 7. 如何在VB6中检测事件处理程序是否已分配?
- 8. 检查处理程序!= null与检查事件!= null在C#
- 9. Onreadystatechange - 事件或事件处理程序?
- 10. 清除或检查C中的事件处理程序#
- 11. 如何将事件处理程序分配给proto.io开关?
- 12. 如何找到jquery事件处理程序分配的位置?
- 13. C#如何检查事件处理程序是否已完成
- 14. 如何检查事件处理程序已注册
- 15. 如何检查js中的事件处理程序的属性?
- 16. 检查事件处理程序连接到与事件
- 17. 处理程序不处理事件
- 18. 什么是不为空的事件处理程序检查?
- 19. 如何在UserControl外部为控件分配事件处理程序?
- 20. 在事件处理程序
- 21. 如何在V5中配置NServicebus V4 ConfigurarionComplete事件处理程序?
- 22. GWT:检查事件处理程序是否存在
- 23. Form OnClick事件处理程序 - 如何重叠其他事件处理程序?
- 24. jquery或js事件处理程序?
- 25. 如何在MFC中启用或禁用事件处理程序?
- 26. 如何在CSS中为处理鼠标事件的处理程序配对
- 27. HTML事件处理程序与React事件处理程序
- 28. 只有在事件处理程序尚不存在的情况下,如何绑定事件处理程序?
- 29. 分层事件处理程序
- 30. 事件处理程序部分工作
你是问如何检查是否有任何事件处理程序附加到事件? – 2011-06-14 05:05:32
是的,但我需要检查quickwatch。 – hashi 2011-06-14 05:10:30
如果不知道如何实现添加和删除访问器,这通常是不可能的。在Winforms中是不可能的。 – 2011-06-14 06:54:19