對於鍵盤事件(PreviewKeyDown,KeyDown,PreviewKeyUp,KeyUp)獲取組合鍵等鍵盤信息比較容易
1、KeyEventArgs對象包含一個KeyStates屬性,該屬性反映觸發事件的鍵的屬性
2、KeyboardDevice屬性為鍵 盤上的所有鍵提供了相同的信息,自然也提供了一個KeyboardDevice類的一個實例。它的屬性包括當前是哪個元素具有焦點,以及當事件發生時按下了哪些修飾鍵(Modifiers)包括Shift、Ctrl、Alt鍵,並且使用位邏輯來檢查它們的狀態.
private
void textBox_KeyDown_1(
object sender, KeyEventArgs e)
{
if ((e. KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
MessageBox.Show( " 您按下了Control鍵 ");
}
}
{
if ((e. KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
MessageBox.Show( " 您按下了Control鍵 ");
}
}
對於檢測具有開關功能的鍵,可以使用Keyboard類下的IsKeyToggled()方法來檢測,例如:
private
void textBox_KeyDown_1(
object sender, KeyEventArgs e)
{
if (Keyboard.IsKeyDown(Key.NumLock))
{
MessageBox.Show( string.Format( " 您按下了NumLock鍵,當前狀態為:{0} ", Keyboard. IsKeyToggled(Key.NumLock)));
}
}
{
if (Keyboard.IsKeyDown(Key.NumLock))
{
MessageBox.Show( string.Format( " 您按下了NumLock鍵,當前狀態為:{0} ", Keyboard. IsKeyToggled(Key.NumLock)));
}
}
當然KeyboardDevice方法也提供了IsKeyDown方法,IsKeyUp方法,IsKeyToggled方法和GetKeyStates方法,例如:
if (e.KeyboardDevice.IsKeyDown(Key.NumLock))
{
MessageBox.Show( string.Format( " 您按下了NumLock鍵,當前狀態為:{0} ", e.KeyboardDevice.IsKeyToggled(Key.NumLock)));
}