Vb.net 按下鼠标时检测鼠标事件

Vb.net 按下鼠标时检测鼠标事件,vb.net,winforms,events,drag-and-drop,mouseenter,Vb.net,Winforms,Events,Drag And Drop,Mouseenter,按下鼠标时是否可以检测鼠标是否进入控件 我假设如果按下鼠标,传统的MouseEnter事件不会触发,因为与dragandrop功能存在一些冲突 在这种情况下,设置.Capture=false是不合适的,因为在MouseDown过程中,必须捕获/处理MouseMove事件。然而,这不是你应该做的事情 重要的是当你按下鼠标按钮时鼠标光标在哪里。这将在基础控件上触发MouseDown事件。但是做了别的事情,它也捕捉到了老鼠。由Control.Capture属性公开 这一点很重要,它可以确保可靠地触发M

按下鼠标时是否可以检测鼠标是否进入
控件

我假设如果按下鼠标,传统的
MouseEnter事件
不会触发,因为与
dragandrop
功能存在一些冲突


在这种情况下,设置
.Capture=false
是不合适的,因为在
MouseDown
过程中,必须捕获/处理
MouseMove
事件。然而,这不是你应该做的事情

重要的是当你按下鼠标按钮时鼠标光标在哪里。这将在基础控件上触发MouseDown事件。但是做了别的事情,它也捕捉到了老鼠。由Control.Capture属性公开

这一点很重要,它可以确保可靠地触发MouseUp事件。许多控件使用该事件触发单击事件。就像一个按钮。一个副作用是,在按住按钮的同时将鼠标移动到的控件将看不到任何鼠标消息。它们改为单击控件。即使将鼠标完全移出控制范围

这是可以修补的。例如,您可以在控件的MouseDown事件处理程序中将Capture属性设置回false,从而使单击完全无效。或者,您可以使用MouseMove监视鼠标位置,并在看到鼠标移动到DisplayRectangle之外时取消捕获


你可以做的事情,但你可能不应该。您使您的UI与用户熟悉的大多数其他程序的UI行为不同。更糟糕的是,它在您自己的UI中是不一致的,很可能发生。像这样迷惑用户很少是个好主意。这取决于你。

嗯,是的,这在技术上是可能的。然而,这不是你应该做的事情

重要的是当你按下鼠标按钮时鼠标光标在哪里。这将在基础控件上触发MouseDown事件。但是做了别的事情,它也捕捉到了老鼠。由Control.Capture属性公开

这一点很重要,它可以确保可靠地触发MouseUp事件。许多控件使用该事件触发单击事件。就像一个按钮。一个副作用是,在按住按钮的同时将鼠标移动到的控件将看不到任何鼠标消息。它们改为单击控件。即使将鼠标完全移出控制范围

这是可以修补的。例如,您可以在控件的MouseDown事件处理程序中将Capture属性设置回false,从而使单击完全无效。或者,您可以使用MouseMove监视鼠标位置,并在看到鼠标移动到DisplayRectangle之外时取消捕获


你可以做的事情,但你可能不应该。您使您的UI与用户熟悉的大多数其他程序的UI行为不同。更糟糕的是,它在您自己的UI中是不一致的,很可能发生。像这样迷惑用户很少是个好主意。这取决于你。

嗯,是的,这在技术上是可能的。然而,这不是你应该做的事情

重要的是当你按下鼠标按钮时鼠标光标在哪里。这将在基础控件上触发MouseDown事件。但是做了别的事情,它也捕捉到了老鼠。由Control.Capture属性公开

这一点很重要,它可以确保可靠地触发MouseUp事件。许多控件使用该事件触发单击事件。就像一个按钮。一个副作用是,在按住按钮的同时将鼠标移动到的控件将看不到任何鼠标消息。它们改为单击控件。即使将鼠标完全移出控制范围

这是可以修补的。例如,您可以在控件的MouseDown事件处理程序中将Capture属性设置回false,从而使单击完全无效。或者,您可以使用MouseMove监视鼠标位置,并在看到鼠标移动到DisplayRectangle之外时取消捕获


你可以做的事情,但你可能不应该。您使您的UI与用户熟悉的大多数其他程序的UI行为不同。更糟糕的是,它在您自己的UI中是不一致的,很可能发生。像这样迷惑用户很少是个好主意。这取决于你。

嗯,是的,这在技术上是可能的。然而,这不是你应该做的事情

重要的是当你按下鼠标按钮时鼠标光标在哪里。这将在基础控件上触发MouseDown事件。但是做了别的事情,它也捕捉到了老鼠。由Control.Capture属性公开

这一点很重要,它可以确保可靠地触发MouseUp事件。许多控件使用该事件触发单击事件。就像一个按钮。一个副作用是,在按住按钮的同时将鼠标移动到的控件将看不到任何鼠标消息。它们改为单击控件。即使将鼠标完全移出控制范围

这是可以修补的。例如,您可以在控件的MouseDown事件处理程序中将Capture属性设置回false,从而使单击完全无效。或者,您可以使用MouseMove监视鼠标位置,并在看到鼠标移动到DisplayRectangle之外时取消捕获


你可以做的事情,但你可能不应该。您使您的UI与用户熟悉的大多数其他程序的UI行为不同。更糟糕的是,它在您自己的UI中是不一致的,很可能发生。像这样迷惑用户很少是个好主意。这取决于你。

首先,我要感谢@Hans的回答。它信息量大,结构良好+1

但就我而言,这个答案并不是一个有效的解决方案。设置
.Cap