由于另一个事件背后的代码,Control不会触发DoubleClick事件

时间:2013-02-12 23:14:31

标签: c# datagrid double-click

我没有在任何地方找到答案,所以我会提出新的问题。我有datagrid,其中是SelectionChanged事件后的一些代码。以及DoubleClick上的一些代码(尝试过MouseDoubleClick,CellDoubleClick和DoubleClick)。在快速PC上没有问题,但是在我的带有Intel Atom的Windows 8平板电脑上,应用程序速度较慢,因为SelectionChange而没有触发DoubleClick。

如果我在SelectionChange上评论代码,则会触发DoubleClick。但是当我离开代码时,它看起来很慢,以至于它无法识别DoubleClick。我必须快速点击(7-8次)来解雇它。

我以为有某种排队。因此,至少应在SelectionChange之后触发DoubleClick。

我不能等待在SelectionChange被激活后查看它是否不是DoubleClick。然后即使在快速PC上看起来应用程序也会很慢。

这个事件怎么会丢失?

2 个答案:

答案 0 :(得分:1)

听起来你可能正在主线程上工作,尝试使用不同的线程进行处理,释放你的UI线程以接收双击。

您需要进行一些同步,但如果正确完成,它应该可以减轻竞争条件。

答案 1 :(得分:1)

您不应该在事件处理程序中进行任何长时间的计算。我建议您开始一个新的thread(或从threadpool借一个,或者开始一个新的task),并在后台线程上执行运行时间更长的代码。