2009-03-22 7 views
7

मैं WPF टेक्स्टबॉक्स में सभी डिफ़ॉल्ट शॉर्टकट अक्षम करना चाहता हूं। जैसे Ctrl +एक, Ctrl +वी, Ctrl +सी आदि शॉर्टकट इस किया जा सकता है ?. मुझे लगता है कि इन शॉर्टकट को KeyDown ईवेंटWPF TextBox 0 शॉर्टकट्स को अक्षम करने के लिए कैसे करें

+0

जिज्ञासा से बाहर: क्यों? –

+0

क्योंकि मैं एक नियंत्रण कर रहा हूं जो उपयोगकर्ता को किसी भी शॉर्टकट को निर्दिष्ट करने की अनुमति देता है जिसे वह कुछ क्रियाओं के लिए उपयोग करना चाहता है। और निश्चित रूप से मुझे Ctrl + A पर सबकुछ चुनने की आवश्यकता नहीं है, लेकिन इसके बजाय मैं इसे –

+0

आह प्रदर्शित करूंगा। मैं डब्ल्यूपीएफ को एक नियंत्रण प्रदान करने की उम्मीद करता था जिसने कुछ पहले ही ऐसा किया था। जानकारी के लिए धन्यवाद। –

उत्तर

3

से पहले निष्पादित किया गया है आप PreviewKeyDown ईवेंट में कीस्ट्रोक को रोक सकते हैं। e.Handled सदस्य को true पर सेट करें और यह वास्तव में कुंजी की प्रसंस्करण को रोक देगा।

+0

धन्यवाद। यह बिंदु के लिए सही है। –

+0

से पहले इस पूर्वावलोकन ईवेंट को कभी नहीं देखा जो केवल कीस्ट्रोक के लिए काम करेगा। अगर संदर्भ मेनू के माध्यम से आदेश लागू किया जाता है तो क्या होगा? या आवेदन मेनू? –

+0

@ केंट, मैं * विश्वास * जो WPF आदेशों के माध्यम से जाता है। मैं उनके कार्यान्वयन से बहुत अपरिचित हूं और यह कैसे काम करेगा इस पर कोई उपयोगी टिप्पणी नहीं दे सकता है। हालांकि मुझे किसी को ऐसा करना अच्छा लगेगा। – JaredPar

3
public Window1() 
{ 
    InitializeComponent(); 
    CommandManager.AddPreviewCanExecuteHandler(_textBox, _canExecute); 
} 

private void _canExecute(object sender, CanExecuteRoutedEventArgs e) 
{ 
    e.CanExecute = false; 
    e.Handled = true; 
} 

ऊपर हुए कहा कि यह किसी भी आदेश संभाल कर सकते हैं से पाठ बॉक्स नहीं कर पाएगा। EventArgs की जांच करके आप चुन सकते हैं कि आप कौन से आदेश अक्षम करना चाहते हैं। या आप इसे एक्सएएमएल में कर सकते हैं:

<TextBox x:Name="_textBox"> 
    <TextBox.CommandBindings> 
     <CommandBinding Command="ApplicationCommands.Copy" CanExecute="_canExecute"/> 
    </TextBox.CommandBindings> 
</TextBox> 

यहां हम कॉपी कमांड के निष्पादन को अक्षम कर रहे हैं। नियंत्रण-सी काम नहीं करेगा, न ही संदर्भ मेनू या मुख्य मेनू होगा। वास्तव में, यदि कोई फोकस TextBox में है तो कॉपी कमांड निष्पादित करने वाला कोई भी नियंत्रण अक्षम कर दिया जाएगा।