WPF中插入键的说明

时间:2015-04-06 07:02:41

标签: c# wpf keyevent

我正在尝试在按下某些键时通知用户。如果按下CapsNumScrollInsert,则相对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的事件就像永远不会发生(断点不会中断),即使功能正常(按下时覆盖文本等)。

有人可以解释我为什么吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Insert键由TextBox控件处理,因此事件不会在UI元素树中路由。

但是,您可以为PreviewKeyDown事件而不是KeyDown附加处理程序:

<Window ... PreviewKeyDown="DxMainWindow_KeyDown">

有关详细信息,请参阅MSDN上的Routed Events Overview文章。