red*_*oze 10 c# wpf event-bubbling
我的程序非常大,并且使用WPF,我希望有一个使用'R'的全局快捷键,没有修饰符.
有许多控件,如TextBox,ListBox,ComboBox等,都在控件内部使用字母,这很好 - 这对我来说是正确的.
但是 - 我希望保持KeyDown事件不会冒泡到主窗口,例如,当用户在TextBox中键入字母'R'时,它会触发快捷方式.
理想情况下,我希望能够做到这一点,而无需指定(并执行if-then逻辑)每个实例/控件类型可能接收正常的字母键按压(不仅仅是TextBox控件,尽管他们是最严重的违规者) ).
Tro*_*sen 10
只需按一下什么OriginalSource
是你的KeyDown
窗口事件处理程序:
private void Window_KeyDown(object sender, KeyEventArgs e) {
if(e.OriginalSource is TextBox || e.OriginalSource is DateTimePicker) //etc
{
e.Handled = true;
return;
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在使用InputBindings,请尝试e.Handled = true
在Window上KeyDown
的PreviewKeyDown
事件或事件中进行设置,而不是单个控件.无论如何,我认为OriginalSource
是你答案的关键.(我发誓这不是双关语).
归档时间: |
|
查看次数: |
11356 次 |
最近记录: |