2010-12-23 79 views
2

我在一个wpf项目中有多个窗口。 在任何窗口中,我把一个控件(如按钮)。因为所有窗口中控件的位置都是相同的。我为所有窗口中的控件定义MouseLeftButtonUp事件。在控件上单击(鼠标左键),我创建并打开对话框的下一个窗口。 例如用于第一个窗口:如何阻止多个鼠标点击下一个窗口WPF中的元素?

Window2 win2 = new Window2(); 
win2.Owner = this; 
win2.ShowDialog(); 

但我的问题:

,如果我做的第一个窗口的按钮,双击或三击,因为在所有的窗户全部位置的控制是一样的,都是两个或三个窗口开放为级联。我只想打开一个窗口。

感谢您的回答

+2

你可能想考虑允许这个,而不是修复它。这是一个功能,而不是一个错误!你的程序的响应速度与用户点击的速度一样快:)如果他们在尝试执行单个动作时双击,则可以将其视为错误。 – 2010-12-23 10:37:43

回答

4

看到我上面的评论。您可能想将其视为“按设计”,而不是修复它。

如果你决定修复它,你可以实现一种去弹跳的形式。

  • 创建某种形式的全局状态,所有窗口都可以看到(例如应用程序对象中的字段或主窗口类)。
  • 在该全局状态下,保持上次成功/正确点击的时间。从DateTime.MinValue开始(或任何它被称为)。
  • 点击后,抓住当前时间DateTime.Now
  • 如果当前时间之间的时间,和姑娘成功点击太短(比你去抖时间少。也许TimeSpan.FromMilliseconds(500)),那么不创建一个新的窗口
  • 如果时间跨度比你去抖时间较长,则更新上次成功/正确点击,然后才打开新窗口
+0

[Debouncing concept](http://en.wikipedia.org/wiki/Switch#Contact_bounce) – 2013-01-27 21:42:33

0

你有没有考虑先禁用按钮,启动第二形式有后装?你可以使用定时器来做到这一点。