在窗体边界处单击时获取鼠标光标的位置

Far*_*man 3 c# mouse-position

只需拖动鼠标就可以很容易地将光标的位置放在窗体的边界之外,当位置发生变化时,它会向窗体发送许多值,形成下面的代码行.

        MessageBox.Show(Cursor.Position.ToString());
Run Code Online (Sandbox Code Playgroud)

MessageBox显示鼠标位置.

但是当用户点击表格边界时,我需要获得鼠标位置.不仅仅是悬停鼠标.我使用以下代码行来执行此操作:

    private void Form1_Deactivate(object sender, EventArgs e)
    {
        MessageBox.Show(Cursor.Position.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

我放置了MessageBox.Show(Cursor.Position.ToString()); 进入表单停用事件.当用户在表单外单击时,此事件肯定会发生.但是当用户没有单击外部但是使用ALT + TAB组合键更改程序时,它也会发送错误的值.实际上我必须从第一次点击的位置开始捕捉该区域的屏幕截图.因此,当在表单外部单击时,我需要光标的位置.喜欢: 在此输入图像描述

小智 10

这可能对某些人有所帮助。

在这里,我使用Windows.Forms.Timer和 两个文本框来显示 [X 和 Y] 光标位置。在计时器刻度上调用 APIGetCursorPos并获取光标位置。

public partial class Form1 : Form
{
    [DllImport("user32.dll")]
    static extern bool GetCursorPos(ref Point lpPoint);

    public Form1()
    {
        InitializeComponent();
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        var pt = new Point();

        GetCursorPos(ref pt);
        textBox1.Text = pt.X.ToString();
        textBox2.Text = pt.Y.ToString();
    }   
}
Run Code Online (Sandbox Code Playgroud)

问候,兰吉特。

  • 不回答如何获取点击的坐标。 (2认同)

HAB*_*JAN 8

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

这是一篇很好的文章,可以帮助您:使用C#处理全局鼠标和键盘挂钩