我在我的WPF应用程序中有一个列表框,当用户双击一个项目时,我更改列表的内容(如目录导航)。在某些情况下,双击是有意义的,然后立即再次双击,因为您知道同一位置会出现什么情况。你会希望你可以通过快速连续点击四次来完成这个任务(这应该意味着“两次双击”)。我怎样才能重复双击没有WPF改变一些三击?
但这并不奏效。如果您点击足够快的速度,直到WPF发送另一个双击事件之前的第五次或第六次点击!
它看起来像WPF内置支持三击,有时甚至更多,如果你点击足够快。我跑了一个简单的例子来证实这一点:
<ListBox PreviewMouseLeftButtonDown="ListBox_PreviewMouseLeftButtonDown"/>
private void ListBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Trace.WriteLine("ClickCount = " + e.ClickCount);
}
当我运行它,点击速射,我得到这样的输出:
ClickCount = 1
ClickCount = 2
ClickCount = 3
ClickCount = 1
ClickCount = 2
ClickCount = 3
ClickCount = 4
ClickCount = 1
ClickCount = 2
ClickCount = 3
有时它计算到3,然后复位;有时它在复位之前计数到4。我无法达到它的最大值5.
但后来我进入控制面板>鼠标,并将双击速度更改为最慢的设置。然后,我可以可靠地将它重新计数到10,如果我真的预订它,可以达到11或12。所以显然这是关于在您的系统配置的“双击”间隔之前您可以多快点击一下。如果您在该时间间隔过去之前多次点击,则会获得“三击”或“四击”或更多。
但我不想想要三击或四击 - 特别是如果他们不可能通过某些双击配置获得。我希望其他每次点击都是双击事件(只要它们连续快速移动,鼠标未超过阈值等)
有没有什么办法可以获得WPF当我点击快速消息时,为我提供正常的双击事件(每隔一次点击事件)?
由于您设法计算点击次数,为什么不在'ClickCount%2 == 0'时做任何您需要做的事情? – madd0 2011-03-10 00:29:23
@ madd0,再看看我发布的输出。 ClickCount不会增加。考虑到上面的示例输出,您将对第2次,第5次,第7次和第10次点击作出回应。偶尔它会得到理想的行为,但只是偶然。 – 2011-03-10 13:44:27