我在面板中有一些带有一些物体的GDI图纸。
当用户点击一个对象时,应选择此对象,如果双击它,则应打开一个新的弹出(属性)窗口。
现在,我凌驾于上帝
OnMouseClick
=> obj.Selected = Not obj.Selected
OnMouseDoubleClick
=> (New Properties(obj)).ShowDialog()
问题是当弹出窗口打开时(因为DoubleClick),对象变为选中状态(因为Click)。有没有避免(忽略)这个中间点击?
(比如说,在实际项目中我不使用点击,但即使是MouseDown
,但问题仍然是相同的)
答案 0 :(得分:2)
答案 1 :(得分:1)
当您获得点击事件时,您可以(使用计时器或任何其他延迟机制)将选择操作延迟稍长于SystemInformation.DoubleClickTime
指定的时间。如果在该时间段内发生了另一个MouseDown
事件,则会双击,因此您应该取消排队的选择操作。
答案 2 :(得分:1)
如何将MouseClick事件处理程序保持原样,只需将另一个obj.Selected = Not obj.Selected
添加到DoubleClick事件处理程序中?
这当然会导致双击的选择未选择序列(或其他方式),我不知道用户是否会识别闪烁,但我想这值得一试,没有计时器就更容易了。 / p>
编辑: 如果有任何事件处理程序附加到目标对象的SelectionChanged事件,这个相当实用的解决方案不起作用,因为它会触发两次不应该触发的事件。