C#表单未捕获任何鼠标事件

C#表单未捕获任何鼠标事件,c#,.net,winforms,events,C#,.net,Winforms,Events,我有几个控件(标签、自定义文本框、Datagridview)停靠在表单上。当我尝试将MouseMove事件挂接到各个控件时,事件会很好地触发,但当我尝试将事件挂接到窗体本身时,MouseMove事件根本没有响应。可能的原因是什么 编辑: 下面是resources.cs中的事件挂钩 this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.LogicSimulationViewerForm_MouseMove); 下面是捕

我有几个控件(标签、自定义文本框、Datagridview)停靠在表单上。当我尝试将MouseMove事件挂接到各个控件时,事件会很好地触发,但当我尝试将事件挂接到窗体本身时,MouseMove事件根本没有响应。可能的原因是什么

编辑:

下面是resources.cs中的事件挂钩

this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.LogicSimulationViewerForm_MouseMove);
下面是捕获事件时处理的函数

private void LogicSimulationViewerForm_MouseMove(object sender, MouseEventArgs e)
        {
           //DOESN'T WORK!!!
        }

Winforms事件不会像WPF或Html中那样冒泡。因此,如果控件停靠在窗体上,窗体不会暴露其自身的任何表面,也不会捕获任何鼠标事件。但是“在水下”,所有windows消息(鼠标移动就是windows消息)都会传递表单,因此可以捕获该消息

编辑
Tigran为使用IMessageFilter提供了一个很好的示例,这使得创建另一个示例有点多余:)

Winforms事件不会像WPF或Html中那样冒泡。因此,如果控件停靠在窗体上,窗体不会暴露其自身的任何表面,也不会捕获任何鼠标事件。但是“在水下”,所有windows消息(鼠标移动就是windows消息)都会传递表单,因此可以捕获该消息

编辑
Tigran为使用IMessageFilter提供了一个很好的示例,这使得创建另一个示例有点多余:)

原因是在
WindowsForms
中的
WPF
差异中,事件被处理它的控件“阻止”(在
WPF
中,事件将被推送到父级,直到可视化树,或者以相反的方向:从父级推到子级)

所以,要捕获该事件,您需要在应用程序级别处理它,而不是订阅单个控制事件

有关如何处理它的更详细示例,请参见:


原因是,在
WindowsForms
中的
WPF
差异中,事件被处理它的控件“阻止”(在
WPF
中,事件将被推送到父级,直到视觉树,或相反方向:从父级推到子级)

所以,要捕获该事件,您需要在应用程序级别处理它,而不是订阅单个控制事件

有关如何处理它的更详细示例,请参见:


它只在您单击表单本身时触发,而不是单击表单的元素。我说的是mousemove而不是MouseMown您应该创建最简单的示例代码,然后用它更新您的问题。如果没有源代码,没有人能够帮到您。我真的不知道为什么您需要最简单的示例代码来处理一些可笑的事情虽然很琐碎,但我不是抱怨的人,所以我会编辑我的问题。它只在你点击表单本身时触发,而不是它的元素。我说的是mousemove而不是mousedown。你应该创建最简单的不起作用的示例代码,并用它更新你的问题。没有源代码,没有人能帮助你。我真的不知道你为什么要这么做你需要一个简单的例子代码来描述一些可笑的琐碎的事情,但我不是那个抱怨的人,所以我会编辑我的问题。那么有没有办法绕过“块”?有没有办法绕过“块”?那么我该如何处理消息?那么我该如何处理消息?