Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从其他类注册鼠标事件_C#_.net_Events_Event Handling - Fatal编程技术网

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

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);

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

在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();

上面创建了classA的一个新实例。如果引发事件的不是此方法,则不会调用方法。

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

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

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

编辑:


您是否尝试“以正常方式”(例如从ClassA构造函数)向同一事件注册不同的方法?若你们并没有访问事件触发代码的权限,那个么这是检查是否注册了正确的处理程序的最好方法,在事件被触发时。

您是否尝试过在
鼠标向下
方法中设置断点?在第二个代码段的第二行中,您的问题似乎有输入错误。您可能希望在开始时使用此关键字而不是classA?是的,我有。它从未进入该方法。有什么想法吗?A班的基础课是什么?它是窗体还是容器控件?如果是,它是否包含任何其他控件?您从未将图片框添加到窗体的控件集合中,因此它不可见且无法单击。让控件监听自己的事件也是非常不寻常的。改为重写OnMouseDown()。