防止鼠标移动后的鼠标单击事件
本文关键字:鼠标 单击 事件 移动 | 更新日期: 2023-09-27 18:37:28
我在可垂直拖动的标签页中有一个用户控件。该控件也是可选的。我希望用户能够单击该项目以选择它,但我不希望在他们完成拖动后触发 MouseClick 事件 - 只有 MouseUp 事件应该触发。即。用户完成拖动后,不应选择该项目。有什么建议吗?
我假设这是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);
}
}
尝试在拖动时设置一个等于 true 的拖动布尔值,然后在短暂的计时器运行后将其关闭。这样,您可以在 MouseClick 事件中添加 if 语句,以查看它最近是否被拖动过。