2015-04-06 50 views
0

我試圖在按下某些密鑰時通知用戶。如果按下Caps,Num,ScrollInsert,則相對應的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事件就像從未發生過(斷點不會中斷),即使功能正常工作(按下時覆蓋文本等)。

有人可以解釋我爲什麼嗎?

謝謝。

回答

1

Insert鍵由TextBox控件處理,以便事件不會路由到UI元素樹。

你可以附上但是一個處理程序PreviewKeyDown事件,而不是KeyDown

<Window ... PreviewKeyDown="DxMainWindow_KeyDown"> 

請參閱MSDN上的Routed Events Overview文章的更多細節。

+0

非常感謝。就是這樣。 – 2015-04-06 07:35:40