FileDialog DoubleClick行为

时间:2010-03-26 07:19:57

标签: c# winforms mouseevent double-click filedialog

2 个答案:

答案 0 :(得分:3)

我之前听说过这个问题,据我所知,这是确保正确处理事件队列的问题。如果没有看到您的代码,就很难检查您的用户控件实现是否正确,但是经常在不让基本事件发生的情况下覆盖鼠标事件会导致这种行为。

答案 1 :(得分:1)

当我意识到我的问题发生的原因时,我正在尝试使用MouseDown和MouseMove事件。当FileDialog框消失时,会触发MouseMove事件。在一个(诚然是愚蠢的)尝试避免两次编写相同的代码块,我从MouseMove处理程序中调用我的MouseDown处理程序,认为某些条件(即没有按下鼠标按钮)会导致MouseDown处理程序有效地执行没有。问题是鼠标按钮被按下,因为FileDialog框在MouseDown(而不是MouseClick)上消失。这导致MouseDown处理程序在我不期待它时执行其条件代码。

从中学到的经验:在链接事件处理程序时要非常小心。或者更好的是,将常用功能拉入方法并且永远不会链接事件处理程序。 : - )

感谢Jelly Amma给我的想法,让我更仔细地看看实际事件。