处理表单上所有控件的单击事件 & 获取鼠标位置

4
我正在开发一个 Windows 窗体,该窗体被覆盖在代表网格的面板中。
我试图创建一个事件处理程序,无论单击发生在哪个面板上都可以处理所有鼠标点击,并将一个 PictureBox 移动到该面板的位置。
我找到了一个相关的主题来处理事件处理程序,但是我无法从事件处理程序中获取鼠标单击的位置。以下是我目前的代码(大多数从另一个帖子中复制):
private void Form1_Load(object sender, EventArgs e)
{
    foreach (Control c in this.Controls)
    {
        c.MouseClick += new MouseEventHandler(myEvent_handler_click);
    }
}

public void myEvent_handler_click(object sender, EventArgs e)
{
    Point point = new Point(e.X, e.Y);

    game.MoveToSquare(point);
}

这行代码 Point point = new Point(e.X, e.Y); 不起作用,因为我无法引用eXY

我如何获取鼠标在单击时的位置?

非常感谢您的帮助。如果我表述不清楚,请随时向我提问!

1个回答

1
活动处理程序的委托定义如下:
public delegate void MouseEventHandler(object sender, MouseEventArgs e);

MouseEventArgs继承自EventArgs,这就是为什么你的代码能够工作的原因。如果你改变了你的EventHandler的定义,你应该能够访问到坐标:

public void myEvent_handler_click(object sender, MouseEventArgs e)
{
    Point point = new Point(e.X, e.Y);
}

您也可以简单地访问e.Location来获取点:

Point point = e.Location;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接