C# 在MouseMove之后防止MouseClick事件

C# 在MouseMove之后防止MouseClick事件,c#,.net,C#,.net,我在标签页中有一个垂直可拖动的用户控件。该控件也是可选的。我希望用户能够单击该项目以选择它,但我不希望在完成拖动后触发MouseClick事件-只应触发MouseUp事件。即,在用户完成拖动后,不应选择该项。有什么建议吗?尝试在拖动时设置一个等于true的拖动布尔值,然后在短时间内关闭它。通过这种方式,您可以在MouseClick事件中添加if语句,以查看它是否最近被拖动。我假设这是WinForms 当你说你有一个用户控件时,你的意思是你有一个从UserControl派生的类吗?在这种情况下,您

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

尝试在拖动时设置一个等于true的拖动布尔值,然后在短时间内关闭它。通过这种方式,您可以在MouseClick事件中添加if语句,以查看它是否最近被拖动。

我假设这是WinForms

当你说你有一个用户控件时,你的意思是你有一个从
UserControl
派生的类吗?在这种情况下,您可以覆盖
OnMouseClick
方法,而不调用
base.OnMouseClick(e)
,这将阻止
鼠标单击
触发

正如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);
    }
}

您使用的是WPF还是ASP.NET?你能展示一下你的事件处理程序吗?