我有一个类试图在另一个类中注册一个事件。
在A班我有一个如下所示的方法:
public void Mouse_Down(object sender, MouseEventArgs e)
{
}
我正在B级注册活动:
ClassA classA = new ClassA();
classA.MouseDown += new MouseEventHandler(classA.Mouse_Down);
点击时没有发生任何事情。有谁知道问题可能是什么。
答案 0 :(得分:1)
假设您要处理由ClassB
引发的事件:
您正在为ClassA
的活动注册活动,而不是ClassB
。你从b级做这件事的事实并不意味着什么。
假设您确实想要处理由ClassA
引发的事件:
一种可能性是ClassA
的不同实例触发事件,而不是处理事件的事件。
ClassA classA = new ClassA();
以上创建了classA的新实例。如果不是这个引发事件,那么你就不会调用你的方法。
答案 1 :(得分:0)
在事件触发代码(classA)中设置断点并检查EventHandlers集合。我敢打赌,没有人注册,你正在搞乱classA实例。
您也可能永远不会获得断点,这意味着您的活动不会被解雇。
无论如何,你想要做的事情对我来说有点奇怪。
修改强>
您是否尝试以“正常方式”向同一事件注册其他方法(例如,来自ClassA构造函数)?如果您无法访问事件触发代码,那么在事件被触发时,最好的方法是检查是否注册了正确的处理程序。