查看与Button关联的所有事件处理程序?

时间:2009-03-18 08:48:45

标签: c# winforms visual-studio-2008 event-handling

我有许多继承用户控件,对于每个用户控件,我有时会覆盖控件上按钮的事件处理程序。 (允许发生儿童特定行为)

有没有办法查看与特定组件关联的所有事件处理程序?

问题是,在其中一个按钮上,事件处理程序会被调用两次。我相信这是因为我已经分配了两次Click事件处理程序,一次在父级中,一次在子用户控件中。我删除了子控件中的赋值,现在单击按钮(在VS2008设计器中)没有任何反应!

感谢所有的帮助!

修改

没有发生任何事情的原因归结为一个版权控制问题....孩子的重叠事件处理程序是不正确的!

但主要观点仍然存在......我不是代码库的唯一贡献者,如果我需要查看哪些事件归因于某个组件,我暂时无法明确。特别是关于计时器,我们动态添加和删除需要“同步”到单个计时器的事件。很高兴看到哪些事件标记在Tick事件上?!

4 个答案:

答案 0 :(得分:3)

您可以根据您要查找的内容对整个解决方案或当前项目源代码进行文本搜索 搜索示例:“controlName.EventName +=”。您将直接看到已订阅此控制事件的内容。

答案 1 :(得分:3)

使用Resharper,我使用Shift-F12执行此操作,后者显示所有用法的树视图(包括通过界面的用法)。如果没有Resharper,使用文本搜索可能最简单,就像Tyalis所说的那样。

答案 2 :(得分:0)

查看组件上的所有事件处理程序(我知道)的唯一方法是编写代码来为您完成,可能使用Reflection。

VS 2008设计师不会为你做这件事;尽管控件上的大多数事件都是多播的,但设计者只支持为每个事件分配一个处理程序。如果您正在做比这更复杂的事情,那么只有在实际调试程序时才能获得准确的结果。

答案 3 :(得分:0)

可以尝试查看源代码,看看它是否被分配了两次?可以在.cs文件中,也可以在.designer.cs文件中。