मेरे आवेदन में, मैं उपयोगकर्ताओं को कीबोर्ड शॉर्टकट को कस्टमाइज़ करना चाहता हूं, जैसा कि यह विजुअल स्टूडियो के कीबोर्ड विकल्पों में किया गया है। उपयोगकर्ता रिक्त टेक्स्ट बॉक्स पर फ़ोकस कर सकता है और उसके बाद कोई शॉर्टकट टाइप कर सकता है जिसे वह कमांड को असाइन करना चाहता है।मैं WPF में उपयोगकर्ता से कस्टम कीबोर्ड शॉर्टकट कैसे पढ़ूं?
टेक्स्टबॉक्स की सदस्यता लेना सबसे नज़दीकी है। टेक्स्टव्यूडाउन घटना, इसे टेक्स्ट बॉक्स में वास्तविक टेक्स्ट इनपुट को रोकने के लिए इसे संभालने के रूप में सेट किया गया है। मैं फिर संशोधक कुंजी से जुड़े कीडाउन घटनाओं को अनदेखा करता हूं (क्या यह निर्धारित करने का एक क्लीनर तरीका है कि कुंजी एक संशोधक कुंजी है या नहीं?)।
// 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 शॉर्टकट कैसे रिकॉर्ड कर सकता हूं? उपयोगकर्ता को शॉर्टकट रिकॉर्ड करने के लिए एक बेहतर, अधिक मजबूत तरीका है?
मुझे लगता है कि एक कुंजी कुंजी कॉम्बो को कैप्चर करने के लिए डब्लूपीएफ द्वारा अल्टी कुंजी का उपयोग किया जाता है जो एक नियंत्रण पर ध्यान केंद्रित करने के लिए होता है जो एक स्नेही शॉर्टकट वाले लेबल से बंधे होते हैं (जैसे _File मेनू के लिए Alt + F, या Alt + O _ ओके बटन के लिए)। शायद इसे रोकने या ओवरराइड करने का कोई तरीका है? –