gpt4 book ai didi

c# - 如何阻止 WPF KeyDown 事件从某些包含的控件(例如 TextBox)中冒出?

转载 作者:可可西里 更新时间:2023-11-01 09:08:55 27 4
gpt4 key购买 nike

我的程序非常大,并且使用 WPF,我想要一个使用“R”且没有修饰符的全局快捷键。
有许多控件,如 TextBox、ListBox、ComboBox 等,它们都在控件本身内部使用字母,这很好 - 这对我来说是正确的。
但是 - 我想阻止 KeyDown 事件冒泡到主窗口,例如,只要用户在文本框中键入字母“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 是您回答的关键。 (我发誓这不是双关语)。

关于c# - 如何阻止 WPF KeyDown 事件从某些包含的控件(例如 TextBox)中冒出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24872940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com