如何获得鼠标的坐标,当它被点击

本文关键字:何获得 鼠标 坐标 | 更新日期: 2023-09-27 18:11:17

我是c#初学者,需要一些帮助。加载表单后,我想在鼠标点击时显示表单坐标。单击可以在表单外进行。例如在浏览器中。有人能帮我一下吗?

如何获得鼠标的坐标,当它被点击

也许最简单的方法是将窗体的Capture属性设置为true,然后处理点击事件,并使用窗体的PointToScreen方法将位置(即与窗体左上角点相关的位置)转换为屏幕位置。

例如,你可以在表单上放一个按钮,然后:

private void button1_Click(object sender, EventArgs e)
{
    //Key Point to handle mouse events outside the form
    this.Capture = true;
}
private void MouseCaptureForm_MouseDown(object sender, MouseEventArgs e)
{
    this.Activate();    
    MessageBox.Show(this.PointToScreen(new Point(e.X, e.Y)).ToString());
    //Cursor.Position works too as RexGrammer stated in his answer
    //MessageBox.Show(this.PointToScreen(Cursor.Position).ToString());
    //if you want form continue getting capture, Set this.Capture = true again here
    //this.Capture = true;
    //but all clicks are handled by form now 
    //and even for closing application you should
    //right click on task-bar icon and choose close.
}
但是更正确(也稍微困难)的方法是使用全局钩子。
如果你真的需要这样做,你可以看看这个链接:
    在c#中处理全局鼠标和键盘钩子c#中的低级鼠标钩子
  • c#中的应用程序和全局鼠标键盘钩子。net库

我认为你至少不能轻松地处理Form以外的鼠标点击。在使用MouseEventArgs的表单内,它可以简单地处理。

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
     // e.Location.X & e.Location.Y
}

在Windows窗体中的鼠标事件中了解有关此主题的更多信息。

Cursor.PositionControl.MousePosition都返回鼠标光标在屏幕坐标中的位置。

以下文章处理捕获Global鼠标单击事件:

在c#中处理全局鼠标和键盘钩子
全局Windows钩子

您需要一个全局鼠标钩子。

参见这个问题