从父控件接收MouseMove事件

时间:2012-11-15 04:13:33

标签: c# winforms mousemove

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

问题是,如果我在按下按钮的同时按下鼠标按钮,按钮会按下,如果我在按住按钮的同时将鼠标移动到面板中,则在我释放鼠标之前,面板鼠标移动功能永远不会被调用按钮。

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

1 个答案:

答案 0 :(得分: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);
}