我在可垂直拖动的标签页中有一个用户控件。控制也是可选择的。我希望用户能够单击该项目以选择它,但我不希望在他们完成拖动后触发 MouseClick 事件 - 只有 MouseUp 事件应该触发。IE。用户完成拖动后不应选择该项目。有什么建议吗?
问问题
1644 次
2 回答
1
我假设这是 WinForms。
当你说你有一个用户控件时,你的意思是你有一个派生自的类UserControl
吗?在这种情况下,您可以覆盖该OnMouseClick
方法而不是 call 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);
}
}
于 2012-06-15T04:44:59.990 回答
0
尝试在拖动时设置一个等于 true 的拖动布尔值,然后在短时间运行后将其关闭。这样,您可以在 MouseClick 事件中添加一条 if 语句,以查看它是否最近被拖动。
于 2012-06-15T02:50:51.330 回答