我是c#的初学者,需要一些帮助。加载表单后,我想在鼠标单击时显示在表格坐标上。点击可以在表格之外进行。例如在浏览器中。有人可以帮我这个。
答案 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.Position
和Control.MousePosition
都会在屏幕坐标中返回鼠标光标的位置。
以下文章涉及捕获Global
鼠标点击事件:
Processing Global Mouse and Keyboard Hooks in C#
Global Windows Hooks
答案 3 :(得分:0)
您需要全局鼠标挂钩。