2

我有一个 WinForm 应用程序,它有一个面板和面板内的两个按钮。我在面板上添加了一个 mousemove 事件,当我在面板内移动鼠标时调用 mousemove 函数,就像预期的那样。

问题是,如果我在一个按钮上按下鼠标按钮,按钮就会按下,如果我在按住按钮的同时将鼠标移动到面板中,则在释放鼠标按钮之前永远不会调用 Panel mousemove 函数。

有解决办法吗?如果我不清楚,我可以尝试更清楚。

4

1 回答 1

1

因此,当按下按钮并且鼠标移回底层面板时,似乎不会触发面板的 MouseMove 事件。

此时您可以通过钩入按钮的 MouseMove 来捕获指针位置。但是,指针的位置将相对于按钮,而不是面板,因此您需要将这些坐标添加到按钮的位置坐标:

Point mousePoint;

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    mousePoint = e.Location;
}

private void button1_MouseMove(object sender, MouseEventArgs e)
{
    mousePoint = new Point(button1.Location.X + e.Location.X, button1.Location.Y + e.Location.Y);
}
于 2012-11-15T04:56:40.143 回答