在我的應用程序中,我想讓用戶自定義鍵盤快捷鍵,就像在Visual Studio的鍵盤選項中完成一樣。用戶可以關注一個空白文本框,然後鍵入他想要分配給命令的任何快捷方式。如何從WPF中的用戶讀取自定義鍵盤快捷鍵?
我來使其工作最接近的是通過訂閱TextBox.PreviewKeyDown事件,將其設置爲處理,以防止在文本框中實際的文字輸入。然後,我忽略與修飾鍵相關的KeyDown事件(是否有更簡潔的方式來確定鍵是修飾鍵?)。
// Code-behind
private void ShortcutTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
// The text box grabs all input
e.Handled = true;
if (e.Key == Key.LeftCtrl ||
e.Key == Key.RightCtrl ||
e.Key == Key.LeftAlt ||
e.Key == Key.RightAlt ||
e.Key == Key.LeftShift ||
e.Key == Key.RightShift)
return;
string shortcutText = "";
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
shortcutText += "Ctrl+";
if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
shortcutText += "Shift+";
if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt)
shortcutText += "Alt+";
_ShortcutTextBox.Text = shortcutText + e.Key.ToString();
}
上述作品開始用Ctrl和按Ctrl + Shift任何快捷鍵,但沒有任何Alt鍵的快捷方式。當我按下包含Alt的快捷鍵時,e.Key始終設置爲Key.System
。
如何從用戶記錄Alt快捷鍵?是否有更好,更強大的方式來記錄用戶的快捷方式?
我感覺Alt鍵被用於通過WPF嘗試捕獲Alt鍵組合集中在其上被綁定到一個標籤與助記符快捷方式(如Alt + F鍵爲_File菜單或Alt控制+ O對於_OK按鈕)。也許有一種方法來防止或重寫呢? – 2010-11-24 19:03:08