C# 如何不处理已由文本框处理的按键下路由事件
我在WPF中有一个附加了KeyDown事件处理程序的窗口 当用户按下数字键(0-9)时,我响应事件。我使用0-9作为快捷键来选择单选按钮。按3键将选择第三个单选按钮 问题是,当用户在文本框内按数字键时,我不想将按键作为快捷方式处理,因为我想保留文本框的默认实现 现在,当用户在文本框内按3时,文本框的文本设置为3,但第3个单选按钮也被选中 我以为当用户按下文本框内的键时,文本框会将e.Handled设置为true,但事实并非如此 文本框也是一个例子。如果用户在我的层次结构中的其他输入控件中输入了某些内容,我不想响应按键按下事件C# 如何不处理已由文本框处理的按键下路由事件,c#,wpf,routed-events,C#,Wpf,Routed Events,我在WPF中有一个附加了KeyDown事件处理程序的窗口 当用户按下数字键(0-9)时,我响应事件。我使用0-9作为快捷键来选择单选按钮。按3键将选择第三个单选按钮 问题是,当用户在文本框内按数字键时,我不想将按键作为快捷方式处理,因为我想保留文本框的默认实现 现在,当用户在文本框内按3时,文本框的文本设置为3,但第3个单选按钮也被选中 我以为当用户按下文本框内的键时,文本框会将e.Handled设置为true,但事实并非如此 文本框也是一个例子。如果用户在我的层次结构中的其他输入控件中输入了某
我想我需要更好地理解路由事件来解决这个问题,或者用另一种方法来解决这个问题?您可以检查
RoutedEventArgs
的OriginalSource
属性(在您的情况下,KeyPressEventArgs
)。如果它是文本框
,请不要处理它。如果不是,请执行您的单选按钮
选择逻辑。尝试使用表单。键预览
属性,并使用活动控件
属性触发逻辑,这是我的第一个想法,但必须有更好的方法。。。不因为在这种情况下,我将不得不考虑所有可能的控制,我不希望处理。这很容易出错。听起来你正计划给你的用户一个头像。应用程序需要对用户友好—这与底层代码的运行一样重要。我担心用户会感到困惑。映射F按钮是否比映射数字更好?(我知道你可能有你的理由,只是问一下)我自己也非常同意。但是用户习惯于使用早期软件中的这些快捷方式,所以这是一项要求。这与上述问题相同。我必须考虑我不想处理的每一个控件。但这似乎是唯一的办法。