即使即使鼠标按钮被按下,C#触发MouseEnter

问题描述:

我有这个问题,当鼠标按钮被按下时,名为“MouseEnter”的事件不会触发。我怎样才能解决它?即使即使鼠标按钮被按下,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应该可以工作。

+0

也不会有任何MouseMove消息。 – 2010-08-11 12:58:58

+0

@Hans - 是的,我测试过它的工作.. – stuartd 2010-08-11 14:31:57

+0

点击一个按钮控件,按住鼠标按钮,将其移到窗体上,看看我的意思。 – 2010-08-11 14:44:17