我正在尝试在按下某些键时通知用户。如果按下Caps
,Num
,Scroll
和Insert
,则相对BarStaticItem
(应用程序使用一些devexpress控件)会将颜色更改为白色。
void DxMainWindow_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.CapsLock)
{
if (e.KeyboardDevice.IsKeyToggled(Key.CapsLock))
{
bCaps.Tag = new SolidColorBrush(Colors.White);
}
else
{
bCaps.Tag = new SolidColorBrush(Colors.DarkGray);
}
}
if (e.Key == Key.NumLock)
{
if (e.KeyboardDevice.IsKeyToggled(Key.NumLock))
{
bNum.Tag = new SolidColorBrush(Colors.White);
}
else
{
bNum.Tag = new SolidColorBrush(Colors.DarkGray);
}
}
if (e.Key == Key.Scroll)
{
if (e.KeyboardDevice.IsKeyToggled(Key.Scroll))
{
bScrl.Tag = new SolidColorBrush(Colors.White);
}
else
{
bScrl.Tag = new SolidColorBrush(Colors.DarkGray);
}
}
if (e.Key == Key.Insert)
{
if (e.KeyboardDevice.IsKeyToggled(Key.Insert))
{
bIns.Tag = new SolidColorBrush(Colors.White);
}
else
{
bIns.Tag = new SolidColorBrush(Colors.DarkGray);
}
}
}
一切正常,但当我在Insert
内按TextBox
时,它无效。奇怪的是,在另一个KeyEvents
的争议中,Insert
的事件就像永远不会发生(断点不会中断),即使功能正常(按下时覆盖文本等)。
有人可以解释我为什么吗?
感谢。
答案 0 :(得分:1)
Insert键由TextBox控件处理,因此事件不会在UI元素树中路由。
但是,您可以为PreviewKeyDown
事件而不是KeyDown
附加处理程序:
<Window ... PreviewKeyDown="DxMainWindow_KeyDown">
有关详细信息,请参阅MSDN上的Routed Events Overview文章。