如何从不同的类注册鼠标事件



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

在A类中,我有一个方法,如下所示:

 public void Mouse_Down(object sender, MouseEventArgs e)
        {
        }

我像这样在类B中注册事件:

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

当点击什么都没有发生。有谁知道是什么问题吗?

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

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


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

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

ClassA classA = new ClassA();

上面的代码创建了一个类a的新实例。如果不是这个引发事件,那么你的方法就不会被调用。

在事件触发代码(类a)处设置一个断点,并检查您的EventHandlers集合。我敢打赌没有人注册,你在搞乱类a实例。

也有可能您永远不会获得断点,这意味着您的事件没有被触发。

不管怎样,你要做的事对我来说有点奇怪。

编辑:

您是否尝试以"正常方式"(例如从ClassA构造函数)注册相同事件的不同方法?如果您无法访问事件触发代码,那么这是在事件被触发的时刻检查是否注册了适当的处理程序的最佳方法。

最新更新