我正在处理代表网格的面板中的窗体。
我正在尝试创建一个处理所有鼠标点击的事件处理程序,无论点击发生在哪个面板上,然后将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);
不起作用,因为我无法引用X
的{{1}}或e
的{{1}}。
如何在点击鼠标时获取鼠标的位置?
感谢任何帮助。如果我不够清楚,请随时问我更多问题!
答案 0 :(得分:1)
事件处理程序的delegate定义如下:
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;