1

我在 WPF 中有一个带有 KeyDown 事件处理程序的窗口。

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

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

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

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

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

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

4

2 回答 2

0

您可以检查(在您的情况下)的OriginalSource属性。如果是,请不要处理。如果不是,请执行您的选择逻辑。RoutedEventArgsKeyPressEventArgsTextBoxRadioButton

于 2011-01-27T10:12:12.613 回答
0

尝试使用表格。KeyPreview属性并使用ActiveControl属性触发逻辑

于 2011-01-27T10:18:55.780 回答