【问题标题】:PreviewMouseDoubleClic handled ignoredPreviewMouseDoubleClic 处理被忽略
【发布时间】:2011-06-28 06:16:51
【问题描述】:

我有一个包含文本框的窗口。

在窗口和文本框上,我添加了一个 PreviewMouseDoubleClicHandler。

窗口中的处理程序:

private void PreviewMouseDoubleClickHandler(object sender, MouseButtonEventArgs e)
{
    Debug.WriteLine("handler in the window");
    e.Handled = true;
}

文本框中的处理程序:

private void PreviewMouseDoubleClickHandler(object sender, MouseButtonEventArgs e)
{
    Debug.WriteLine("handler in the textBox");
    e.Handled = true;
}

现在,当我双击文本框时,我希望首先进入窗口的处理程序,打印调试行,然后处理事件,然后仅此而已。我认为 textBox 的处理程序不会触发,因为该事件已由窗口处理。

但这不是这样工作的:我让两个处理程序都被解雇了。

奇怪的是:它与 PreviewMouseDown 事件配合得很好。如果我用 PreviewMouseDownEvents 做同样的事情,我会得到我期望的行为,即:窗口处理 mouseDown 并且 textBox 的处理程序不会被触发。

那么为什么这不适用于 doubleClick 事件?难道我做错了什么?它应该像这样工作吗?是否以不同的方式管理 doubleClick 事件,使我无法利用隧道的优势?

【问题讨论】:

    标签: wpf event-handling double-click tunneling


    【解决方案1】:

    【讨论】:

    • 是的,我已经有 mouseButtonDown + clickCount 选项作为备份解决方案,但在我的情况下,这确实有点矫枉过正,我想知道是否可以使用 doubleClickEventHandler。真的很奇怪,你不能通过双击使用隧道。 :-/
    • 这种行为实际上是设计使然,根据 MSDN:msdn.microsoft.com/en-us/library/…
    • 将此作为答案,我会将您标记为已接受。这是我丢失的信息(我真的应该 RTFM)
    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多