我在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事件。
我想我需要更好地理解路由事件来解决这个问题,或者以另一种方式解决这个问题?
答案 0 :(得分:0)
您可以查看OriginalSource
的{{1}}属性(在您的情况下为RoutedEventArgs
)。如果是KeyPressEventArgs
,请不要处理它。如果不是,请执行TextBox
选择逻辑。
答案 1 :(得分:0)
尝试使用Form。KeyPreview
属性,并使用ActiveControl
属性触发逻辑