wpf - 如何处理 KeyDown 事件的 WPF TextBox "knows"

标签 wpf textbox event-bubbling

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

根据我对工作原理的理解,如果 PreviewKeyDown 事件首先从窗口隧道传输到 TextBox,然后 KeyDown 事件从 TextBox 向上冒泡到窗口。当窗口的事件处理程序开始设置 Handled 事件时,该事件不再由 TextBox 处理,但我确实看到它有效果,并且按下的键没有添加到 TextBox。

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

(这是一个一般性问题,但在我看到我们正在使用的第三方控件中出现类似行为后提出,这给我带来了问题,因为我希望控件处理事件但阻止它向上冒泡.)

最佳答案

好吧,实际上,无论是否处理这些事件,这些事件总是会冒泡/隧道。只是大多数事件处理程序未注册以接收“已处理”事件的情况。

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

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

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

关于wpf - 如何处理 KeyDown 事件的 WPF TextBox "knows",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847157/

相关文章:

c# - 在启动时设置按钮的 ToggleState 并检查状态

c# - 如何将值设置为 WPF 中的自定义 DataGrid 绑定(bind)列

c# - ASP.NET C# 将文本框中的值写入标签 : beginner simple

JavaScript 异常/错误处理不起作用

javascript - 选择什么事件将处理程序从 <select> 委托(delegate)给选定的 <option>?

c# - 类型的对象无法应用于期望类型为system.windows.data.ivalueconverter的属性

c# - 使用 wpf 进度条上传多个文件

asp.net - ASP .Net Textbox Textchanged事件

javascript - 使用 Javascript 从 HTML 列表框(多选)中的项目生成逗号分隔的字符串

javascript - 在服务器发送事件的情况下面对 Javascript 冒泡