区分Click的方法来自DoubleClick

时间:2010-08-07 13:23:50

标签: .net winforms events gdi+

我在面板中有一些带有一些物体的GDI图纸。

当用户点击一个对象时,应选择此对象,如果双击它,则应打开一个新的弹出(属性)窗口。

现在,我凌驾于上帝 OnMouseClick => obj.Selected = Not obj.Selected
OnMouseDoubleClick => (New Properties(obj)).ShowDialog()

问题是当弹出窗口打开时(因为DoubleClick),对象变为选中状态(因为Click)。有没有避免(忽略)这个中间点击?

(比如说,在实际项目中我不使用点击,但即使是MouseDown,但问题仍然是相同的)

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

当您获得点击事件时,您可以(使用计时器或任何其他延迟机制)将选择操作延迟稍长于SystemInformation.DoubleClickTime指定的时间。如果在该时间段内发生了另一个MouseDown事件,则会双击,因此您应该取消排队的选择操作。

答案 2 :(得分:1)

如何将MouseClick事件处理程序保持原样,只需将另一个obj.Selected = Not obj.Selected添加到DoubleClick事件处理程序中? 这当然会导致双击的选择未选择序列(或其他方式),我不知道用户是否会识别闪烁,但我想这值得一试,没有计时器就更容易了。 / p>

编辑: 如果有任何事件处理程序附加到目标对象的SelectionChanged事件,这个相当实用的解决方案不起作用,因为它会触发两次不应该触发的事件。