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