在WPF中插入密钥的说明
问题描述:
我试图在按下某些密钥时通知用户。如果按下Caps
,Num
,Scroll
和Insert
,则相对应的BarStaticItem
(应用程序使用一些devexpress控件)会将颜色更改为白色。在WPF中插入密钥的说明
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
事件就像从未发生过(断点不会中断),即使功能正常工作(按下时覆盖文本等)。
有人可以解释我为什么吗?
谢谢。
答
Insert键由TextBox控件处理,以便事件不会路由到UI元素树。
你可以附上但是一个处理程序PreviewKeyDown
事件,而不是KeyDown
:
<Window ... PreviewKeyDown="DxMainWindow_KeyDown">
请参阅MSDN上的Routed Events Overview文章的更多细节。
非常感谢。就是这样。 – 2015-04-06 07:35:40