我在一个可垂直拖动的标签页中有一个用户控件。控件也是可选择的。我希望用户能够单击该项以选择它,但我不希望MouseClick事件在完成拖动时触发 - 只有MouseUp事件才会触发。 IE浏览器。用户完成拖动后不应选择该项目。有什么建议吗?
答案 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语句,以查看它是否最近被拖动。