首页 文章

WPF TextBox如何“知道”处理了KeyDown事件

提问于
浏览
3

我注意到当窗口处理由其中的文本框引发的KeyDown事件并将事件Handled标志设置为true时,文本框忽略按下的键并且不将其添加到其内容中 .

根据我对事物如何工作的理解,如果首先从窗口隧道到TextBox然后KeyDown事件从TextBox冒泡到窗口,则PreviewKeyDown事件 . 当窗口的事件处理程序设置Handled事件时,TextBox不再处理该事件,但我确实看到它有效果,并且按下的键不会添加到TextBox中 .

谁能解释一下这是如何工作的?

(这是一个普遍的问题,但是在我看到我们正在使用的第三方控件中出现类似的行为之后引发了它,并且它引起了我的问题,因为我希望控件能够处理事件但是阻止它向上冒泡 . )

1 回答

  • 0

    嗯,实际上,无论是否处理,这些事件总会冒泡/隧道 . 大多数事件处理程序都没有注册以接收“已处理”事件 .

    例如,可以选择订阅KeyDown事件并接收“调用”,即使它已在某处处理 .

    但是,事件的顺序通常是从顶部(隧道)开始,然后隧道返回到元素并冒泡 .

    如果您有更多问题,请告诉我们 .

相关问题