C#学习教程:如何阻止WPF KeyDown事件从某些包含的控件(如TextBox)冒泡?分享


如何阻止WPF KeyDown事件从某些包含的控件(如TextBox)冒泡?

我的程序非常大,并且使用WPF,我希望有一个使用’R’的全局快捷键,没有修饰符。
有许多控件,如TextBox,ListBox,ComboBox等,都在控件内部使用字母,这很好 – 这对我来说是正确的。
但是 – 我想保持KeyDown事件不会冒泡到主窗口 ,例如,当用户在TextBox中键入字母’R’时,它会触发快捷方式。
理想情况下,我希望能够做到这一点,而无需指定(并执行if-then逻辑)每个可能接收正常按字母键的控件的实例/类型(不仅仅是TextBox控件,尽管他们是最严重的违规者) )。

只需检查Window上的KeyDown事件处理程序中的OriginalSource

 private void Window_KeyDown(object sender, KeyEventArgs e) { if(e.OriginalSource is TextBox || e.OriginalSource is DateTimePicker) //etc { e.Handled = true; return; } } 

或者,如果您正在使用InputBindings,请尝试在Window上的KeyDownPreviewKeyDown事件中设置e.Handled = true ,而不是单个控件。 无论如何,我认为OriginalSource是你答案的关键。 (我发誓这不是双关语)。

处理KeyDown事件时会发生一个事件,它应该传递一个KeyEventArgs 。 从那里你可以将Handled设置为true,这样它就不会冒出来。

样品

上述就是C#学习教程:如何阻止WPF KeyDown事件从某些包含的控件(如TextBox)冒泡?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 private void TextBoxEx_KeyAction(object sender, KeyEventArgs e) { e.Handled = true; } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1269770.html

(0)
上一篇 1天前
下一篇 1天前

精彩推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注