2011-10-06 72 views
3

我已经看到报道了类似的问题,但从来没有回答。这对我来说是一个主要问题。响应双击传输时关闭一个WPF窗口双击主窗口

我有一个WPF应用程序,它使用ShowDialog()打开一个新窗口。在新窗口中,我有一个数据网格,但它可以是任何类型的对象。当我处理一行的doubleclick事件时,我关闭了窗口。此时窗口关闭,但直接在我点击的位置的主窗口中的控件接收到点击。

我试着处理PreviewMouseButtonDown并寻找clickcount = 2而不是doubleclick,但是效果相同。我尝试设置e.Handled = true,这也有同样的效果。我试图在窗户上设置一个所有者,但没有任何改变。我尝试了模态以及常规窗口并且没有改变。我对PreviewMouseButtonDown做出了一次单击回应,并且这种方式很有效,但我绝对需要这样做才能实现双击。

我已经尝试了一切请帮助!

如果可能的话,我会喜欢解释,但即使只是解决方案是好的。

回答

0

好吧,我在我们的项目中有一个类似的问题,并且它有点相关。我们从来没有真正解决它,但现在我给了它更多的想法。我的猜测是,因为你,而你是关闭该窗口在处理输入的进度,该输入处理被取消,您的窗口关闭,但输入要求它仍然是(因为它没有前处理),因此你的父母窗口可以处理它。 所以这当然只是在黑暗中拍摄,但可以解释我们的问题。 所以给一个解决方案: 你可以代替关闭窗口,用较低的优先级作为输入,只需关闭窗口,在那里设立了一个调度工作。它应该对用户感觉相同,但应该消耗双击。

再次没有保证它听起来在我脑海中合理。

祝你好运。

0

我有同样的问题。 您可以在子窗口是在调整了一段milisecounds关闭主窗口。 我知道这是丑陋的代码,但对我来说工作得很好。

0

问题是双击事件在第二次鼠标DOWN事件时触发。如果关闭该窗口作为该事件处理的一部分,则您仍然要在对话框后面打开的任何窗口中收到鼠标悬停事件。

我认为解决方案可能是在双击处理和鼠标上设置一个标志,如果设置了标志,关闭窗口。