Trong ứng dụng của tôi, tôi muốn cho phép người dùng tùy chỉnh phím tắt, giống như được thực hiện trong các tùy chọn bàn phím của Visual Studio. Người dùng có thể tập trung vào một hộp văn bản trống và sau đó gõ bất kỳ phím tắt nào anh ta muốn gán cho một lệnh.Làm cách nào để đọc lối tắt bàn phím tùy chỉnh từ người dùng trong WPF?
Gần nhất tôi đã đến để làm cho nó hoạt động là bằng cách đăng ký vào sự kiện TextBox.PreviewKeyDown, thiết lập nó như được xử lý để ngăn chặn đầu vào văn bản thực tế trong hộp văn bản. Sau đó tôi bỏ qua các sự kiện KeyDown liên kết với các phím bổ trợ (có cách nào rõ ràng hơn để xác định xem một khóa có phải là một phím bổ trợ không?).
// 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();
}
Tác vụ trên cho mọi phím tắt bắt đầu bằng Ctrl và Ctrl + Shift, nhưng không thành công cho bất kỳ phím tắt Alt nào. E.Key luôn được đặt thành Key.System
khi tôi nhấn phím tắt có chứa Alt.
Tôi làm cách nào để ghi lại phím tắt Alt từ người dùng? Có cách nào tốt hơn, mạnh mẽ hơn để ghi lại lối tắt tạo thành người dùng không?
Tôi có cảm giác phím Alt được WPF sử dụng để cố gắng chụp tổ hợp phím Alt để tập trung vào điều khiển được gắn với nhãn có phím tắt chú thích (như Alt + F cho menu _File hoặc Alt + O cho nút _OK). Có thể có cách để ngăn chặn hoặc ghi đè điều đó? –