如何处理已经由例如处理过的KeyDown路由事件。一个TextBox

时间:2011-01-27 10:07:54

标签: c# wpf routed-events

我在WPF中有一个Window,附带了KeyDown事件处理程序。

当用户按下数字键(0-9)时,我会响应该事件。我使用0-9作为快捷键来选择radiobutton。例如。按键3将选择第3个无线电按钮。

问题是当用户按下TextBox中的数字键时,我不想将keypress作为快捷键处理,因为我想保留TextBox的默认实现。

现在,当用户在TextBox中按3时,TextBox的文本设置为3,但也选择了第3个radiobutton。

我认为当用户在TextBox中按下键时,TextBox会将e.Handled设置为true,但事实并非如此。

TextBox也只是一个例子。如果用户在我的层次结构中的其他输入控件中输入内容,我不想响应KeyDown事件。

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

2 个答案:

答案 0 :(得分:0)

您可以查看OriginalSource的{​​{1}}属性(在您的情况下为RoutedEventArgs)。如果是KeyPressEventArgs,请不要处理它。如果不是,请执行TextBox选择逻辑。

答案 1 :(得分:0)

尝试使用Form。KeyPreview属性,并使用ActiveControl属性触发逻辑