我需要知道如何检查已分配的任何事件处理程序? (在快速监视)如何检查事件处理程序分配或不在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. 处理程序不处理事件
- 8. 如何在UserControl外部为控件分配事件处理程序?
- 9. 在事件处理程序
- 10. 如何在V5中配置NServicebus V4 ConfigurarionComplete事件处理程序?
- 11. GWT:检查事件处理程序是否存在
- 12. 如何在CSS中为处理鼠标事件的处理程序配对
- 13. HTML事件处理程序与React事件处理程序
- 14. 只有在事件处理程序尚不存在的情况下,如何绑定事件处理程序?
- 15. .Net何时分配事件处理程序方法来控制事件?
- 16. 如何分配处理程序来处理任何URL?
- 17. jQuery:如何在hashchange事件处理程序中查找元素?
- 18. 查找事件处理程序
- 19. 如何同步事件处理程序
- 20. 如何释放事件处理程序
- 21. 事件处理程序事件处理程序不调用上单击按钮
- 22. 如何处理顺序调用事件处理程序?
- 23. jQuery鼠标悬停事件处理程序不工作或正在检测
- 24. ASP.Net分配事件处理程序ASP按钮点击
- 25. 复制事件处理程序分配给另一个实例
- 26. 分配C#事件处理程序的差异?
- 27. Wierd动态onclick事件处理程序分配问题
- 28. 如何在C#中编写事件和事件处理程序?
- 29. 不检测复选框是否被检查的类事件处理程序
- 30. 如何检测jQuery keydown事件处理程序中的SHIFT键?
你是问如何检查是否有任何事件处理程序附加到事件? – 2011-06-14 05:05:32
是的,但我需要检查quickwatch。 – hashi 2011-06-14 05:10:30
如果不知道如何实现添加和删除访问器,这通常是不可能的。在Winforms中是不可能的。 – 2011-06-14 06:54:19