Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何不处理已由文本框处理的按键下路由事件_C#_Wpf_Routed Events - Fatal编程技术网

C# 如何不处理已由文本框处理的按键下路由事件

C# 如何不处理已由文本框处理的按键下路由事件,c#,wpf,routed-events,C#,Wpf,Routed Events,我在WPF中有一个附加了KeyDown事件处理程序的窗口 当用户按下数字键(0-9)时,我响应事件。我使用0-9作为快捷键来选择单选按钮。按3键将选择第三个单选按钮 问题是,当用户在文本框内按数字键时,我不想将按键作为快捷方式处理,因为我想保留文本框的默认实现 现在,当用户在文本框内按3时,文本框的文本设置为3,但第3个单选按钮也被选中 我以为当用户按下文本框内的键时,文本框会将e.Handled设置为true,但事实并非如此 文本框也是一个例子。如果用户在我的层次结构中的其他输入控件中输入了某

我在WPF中有一个附加了KeyDown事件处理程序的窗口

当用户按下数字键(0-9)时,我响应事件。我使用0-9作为快捷键来选择单选按钮。按3键将选择第三个单选按钮

问题是,当用户在文本框内按数字键时,我不想将按键作为快捷方式处理,因为我想保留文本框的默认实现

现在,当用户在文本框内按3时,文本框的文本设置为3,但第3个单选按钮也被选中

我以为当用户按下文本框内的键时,文本框会将e.Handled设置为true,但事实并非如此

文本框也是一个例子。如果用户在我的层次结构中的其他输入控件中输入了某些内容,我不想响应按键按下事件


我想我需要更好地理解路由事件来解决这个问题,或者用另一种方法来解决这个问题?

您可以检查
RoutedEventArgs
OriginalSource
属性(在您的情况下,
KeyPressEventArgs
)。如果它是
文本框
,请不要处理它。如果不是,请执行您的
单选按钮
选择逻辑。

尝试使用表单。
键预览
属性,并使用
活动控件
属性触发逻辑,这是我的第一个想法,但必须有更好的方法。。。不因为在这种情况下,我将不得不考虑所有可能的控制,我不希望处理。这很容易出错。听起来你正计划给你的用户一个头像。应用程序需要对用户友好—这与底层代码的运行一样重要。我担心用户会感到困惑。映射F按钮是否比映射数字更好?(我知道你可能有你的理由,只是问一下)我自己也非常同意。但是用户习惯于使用早期软件中的这些快捷方式,所以这是一项要求。这与上述问题相同。我必须考虑我不想处理的每一个控件。但这似乎是唯一的办法。