C# 如何从其他类注册鼠标事件
我有一个类试图在另一个类中注册一个事件 在A类中,我有一个如下所示的方法:C# 如何从其他类注册鼠标事件,c#,.net,events,event-handling,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);
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();
上面创建了classA的一个新实例。如果引发事件的不是此方法,则不会调用方法。在事件触发代码(classA)处设置断点,并检查EventHandlers集合。我敢打赌,没有人注册,而您正在处理classA实例 您也可能永远无法获得断点,这意味着您的事件没有被触发 不管怎样,你想做的事对我来说有点奇怪 编辑:
您是否尝试“以正常方式”(例如从ClassA构造函数)向同一事件注册不同的方法?若你们并没有访问事件触发代码的权限,那个么这是检查是否注册了正确的处理程序的最好方法,在事件被触发时。您是否尝试过在
鼠标向下
方法中设置断点?在第二个代码段的第二行中,您的问题似乎有输入错误。您可能希望在开始时使用此关键字而不是classA?是的,我有。它从未进入该方法。有什么想法吗?A班的基础课是什么?它是窗体还是容器控件?如果是,它是否包含任何其他控件?您从未将图片框添加到窗体的控件集合中,因此它不可见且无法单击。让控件监听自己的事件也是非常不寻常的。改为重写OnMouseDown()。