在MouseMove之后阻止MouseClick事件

时间:2012-06-15 02:09:19

标签: c# .net

我在一个可垂直拖动的标签页中有一个用户控件。控件也是可选择的。我希望用户能够单击该项以选择它,但我不希望MouseClick事件在完成拖动时触发 - 只有MouseUp事件才会触发。 IE浏览器。用户完成拖动后不应选择该项目。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我假设这是WinForms。

当您说您拥有用户控件时,您是否意味着您拥有一个源自UserControl的类?在这种情况下,您可以覆盖OnMouseClick方法,而不是调用base.OnMouseClick(e),这会阻止MouseClick被解雇。

与SamHi建议的一样,您可以使用拖动开始时设置为true的布尔值,并且一旦调用OnMouseClick,您就可以将该布尔值设置为false,从而允许鼠标点击后发生拖动完成。

示例:

public class MyUserControl : UserControl
{
    bool dragging = false;

    // ...

    protected override void OnMouseClick(MouseEventArgs e)
    {
        if (dragging)
        {
            // We've finished dragging, don't call MouseClick
            dragging = false;
            return;
        }

        // Not dragging, fire MouseClick
        base.OnMouseClick(e);
    }
}

答案 1 :(得分:0)

在拖动时尝试使用等于true的拖动bool,然后在短暂的计时器运行后关闭它。这样,您可以在MouseClick事件中添加if语句,以查看它是否最近被拖动。