在窗体边界外单击时的鼠标光标的位置

问题描述 投票:4回答:5

[只要拖动鼠标,当位置改变时,它就会向窗体发送许多值,这很容易得到光标的位置,形成下面的代码。

MessageBox.Show(Cursor.Position.ToString());

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9ja2VVRy5wbmcifQ==” alt =“显示鼠标位置的消息框。”>

但是当用户clicked超出窗体边界时,我需要获取鼠标位置。不只是将鼠标悬停。我使用下面的代码行来做到这一点:

private void Form1_Deactivate(object sender, EventArgs e)
{
    MessageBox.Show(Cursor.Position.ToString());
}

我将MessageBox.Show(Cursor.Position.ToString());放入表单Deactivate事件中。当用户在表单外单击时,肯定会发生此事件。但是,当用户没有单击外部但使用ALT + TAB组合键更改程序时,它也会发送错误的值。

实际上,我必须从第一次单击的位置开始捕获该区域的屏幕快照。因此,我需要在窗体外部单击光标时的位置。喜欢:“在此处输入图像描述”

通过拖动鼠标,很容易获得光标在窗体边界之外的位置,只要位置改变,它就会向窗体发送许多值,形成下面的代码行。 ...

c# mouse-position
5个回答
8
投票

您应该使用Global Mouse Hook逻辑来执行此操作。


6
投票

这可能有帮助。


1
投票

解决这个问题很简单。您只需要一个System.Windows.Forms.Timer,然后使用System.Runtime.InteropService.DllImport从user32.dll中终止方法GetKeyState


1
投票

尝试一下:


0
投票

停用事件会通知您表单不再有效。可能由于许多原因而发生。

© www.soinside.com 2019 - 2024. All rights reserved.