4

我正在研究一个覆盖在表示网格的面板中的 windows 窗体。

我正在尝试创建一个事件处理程序来处理所有鼠标单击,而不管单击发生在哪个面板上,然后将 a 移动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);不起作用,因为我无法引用XofeYof e

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

任何帮助表示赞赏。如果我不够清楚,请随时问我更多问题!

4

1 回答 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;
于 2013-03-27T10:15:16.363 回答