如何在Windows窗体应用程序中捕获面板外的鼠标?
答案 0 :(得分:3)
要捕获全局鼠标和键盘事件,您需要捕获Windows消息WM_MOUSE_LL和WM_KEYBOARD_LL,而不仅仅是WM_MOUSE和WM_KEYBOARD。这些事件只能在NT / 2000 / XP中捕获。在以后的操作系统版本中,这是不可能的(出于相当明显的安全原因,我认为)。
如果你使用的是NT / 2000 / XP,这里有一些示例代码:
答案 1 :(得分:1)
答案在您的问题中,将面板的Capture属性设置为true。现在,即使鼠标位于面板窗口之外,所有鼠标输入事件也会定向到面板。然而,这是一个临时条件(应该是),单击按钮将在单击传递到面板后取消捕获。 MouseCaptureChanged事件可以让您知道发生的时间。无条件捕获鼠标不是一个选项,例如键入Ctrl + Esc将始终取消它。
答案 2 :(得分:0)
您可以处理表单本身的MouseClick事件。
class YourForm : Form
{
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
// Do something.
}
}