即使即使鼠标按钮被按下,C#触发MouseEnter
答
这是设计。你可以解决它通过使用,比如说,MouseMove事件:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point pt = TargetControl.PointToClient(Cursor.Position);
Rectangle rc = TargetControl.ClientRectangle;
if (rc.Contains(pt))
{
// do what would be done on MouseEnter
}
}
}
这是不理想的,虽然 - 如果鼠标按钮被按下当鼠标悬停在其他控制形式上,那么它不” t出现在按下按钮的MouseMove事件中(如@Hans指出的,另一个控件'捕捉'MouseDown)。如果这是一个问题,那么在MouseMove中结合命中测试,同时分别跟踪表单上的MouseDown和MouseUp应该可以工作。
也不会有任何MouseMove消息。 – 2010-08-11 12:58:58
@Hans - 是的,我测试过它的工作.. – stuartd 2010-08-11 14:31:57
点击一个按钮控件,按住鼠标按钮,将其移到窗体上,看看我的意思。 – 2010-08-11 14:44:17