如何在单击鼠标时获取鼠标的坐标

时间:2015-09-05 19:53:30

标签: c# .net winforms onclick mouseevent

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

4 个答案:

答案 0 :(得分:1)

也许最简单的方法是将表单的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.
}

但更正确(也有点困难)的方法是使用全局钩子 如果你真的需要这样做,你可以看一下这个链接:

答案 1 :(得分:0)

我认为您无法轻松地在Form之外处理鼠标点击。 在使用MouseEventArgs的表单中,可以简单地处理它。

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

Mouse Events in Windows Forms了解有关此主题的更多信息。

我希望它有所帮助。

答案 2 :(得分:0)

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

以下文章涉及捕获Global鼠标点击事件:

Processing Global Mouse and Keyboard Hooks in C#
Global Windows Hooks

答案 3 :(得分:0)

您需要全局鼠标挂钩。

See this question