即使按住鼠标按钮,C#也会触发Mouse Over事件

时间:2010-08-11 11:35:15

标签: c# winforms

我遇到这个问题,当按住鼠标按钮时,名为“MouseEnter”的事件不会触发。我怎么能解决它?

1 个答案:

答案 0 :(得分:3)

这是设计的。您可以使用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
        }
    }
}

但这并不理想 - 如果当鼠标悬停在表单上的另一个控件上时按下鼠标按钮,则按钮按下时MouseMove事件中不会显示(正如@Hans指出的那样,另一个控件'捕获'MouseDown)。如果这是一个问题,那么在MouseMove中组合命中测试,同时在表单上单独跟踪MouseDown和MouseUp应该有效。