如何获得鼠标的坐标,当它被点击
本文关键字:何获得 鼠标 坐标 | 更新日期: 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.Position
和Control.MousePosition
都返回鼠标光标在屏幕坐标中的位置。
以下文章处理捕获Global
鼠标单击事件:
在c#中处理全局鼠标和键盘钩子
全局Windows钩子
您需要一个全局鼠标钩子。
参见这个问题