내 응용 프로그램에서 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 키를 사용하여 Alt 키 콤보 캡처를 시도하여 니모닉 바로 가기 (Alt + F, _File 메뉴 또는 Alt + O) 레이블에 연결된 컨트롤에 초점을 맞추려고했습니다. _OK 버튼의 경우). 어쩌면 그것을 방지하거나 무시할 수있는 방법이 있을까요? –