如何从其他类注册鼠标事件

时间:2011-12-14 10:53:33

标签: c# .net events event-handling

我有一个类试图在另一个类中注册一个事件。

在A班我有一个如下所示的方法:

 public void Mouse_Down(object sender, MouseEventArgs e)
        {

        }

我正在B级注册活动:

            ClassA classA = new ClassA();
            classA.MouseDown += new MouseEventHandler(classA.Mouse_Down);

点击时没有发生任何事情。有谁知道问题可能是什么。

2 个答案:

答案 0 :(得分:1)

假设您要处理由ClassB引发的事件:

您正在为ClassA的活动注册活动,而不是ClassB。你从b级做这件事的事实并不意味着什么。


假设您确实想要处理由ClassA引发的事件:

一种可能性是ClassA的不同实例触发事件,而不是处理事件的事件。

ClassA classA = new ClassA();

以上创建了classA的新实例。如果不是这个引发事件,那么你就不会调用你的方法。

答案 1 :(得分:0)

在事件触发代码(classA)中设置断点并检查EventHandlers集合。我敢打赌,没有人注册,你正在搞乱classA实例。

您也可能永远不会获得断点,这意味着您的活动不会被解雇。

无论如何,你想要做的事情对我来说有点奇怪。

修改

您是否尝试以“正常方式”向同一事件注册其他方法(例如,来自ClassA构造函数)?如果您无法访问事件触发代码,那么在事件被触发时,最好的方法是检查是否注册了正确的处理程序。