2010-05-23 9 views
10

मैं हटाए गए कुंजी प्रेस को कैप्चर करना चाहता हूं और कुंजी दबाए जाने पर कुछ भी नहीं करना चाहता हूं। मैं इसे WPF और Windows फॉर्म में कैसे कर सकता हूं?सी # में डिलीट कुंजी प्रेस कैप्चर कैसे करें?

+2

कौन सा यूआई ढांचा? WinForms? WPF? ...? –

+2

प्लस किस संदर्भ में? एक टेक्स्टबॉक्स, एक फॉर्म, आदि – JaSk

+0

@ मेहरदद अफशारी। WPF और Winforms – thuaso

उत्तर

3

मुझे डब्ल्यूपीएफ के बारे में पता नहीं है, लेकिन Winforms के लिए KeyPress ईवेंट के बजाय KeyDown ईवेंट आज़माएं।

नियंत्रण पर MSDN article देखें। कुंजीपटल, विशेष रूप से वाक्यांश "कुंजीपटल घटना गैर-कैरेक्टर कुंजी द्वारा नहीं उठाई जाती है, हालांकि, गैर-कैरेक्टर कुंजी कुंजीडाउन और कीप घटनाओं को बढ़ाती है।"

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Delete) 
    { 
     MessageBox.Show("delete pressed"); 
     e.Handled = true; 
    } 
} 

कौन सा लगभग WinForms के लिए के रूप में ही है:

17

WPF के लिए एक KeyDown हैंडलर जोड़ने

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Delete) 
    { 
     MessageBox.Show("delete pressed"); 
     e.Handled = true; 
    } 
} 

और भूल नहीं है पर KeyPreview चालू करने के लिए।

यदि आप ऊपर दिखाए गए अनुसार कुंजी की डिफ़ॉल्ट कार्रवाई को e.Handled = true सेट करना चाहते हैं। यह WinForms में ही है और WPF

+1

दोनों उत्तर के लिए धन्यवाद। मैं हटाएं कार्रवाई को कैसे रोक सकता हूं? – thuaso

+0

जानना अच्छा है! यह देखने के लिए कैसे जांचें कि CTRL या SHIFT दबाया गया है या नहीं? – Matt

+1

@ मैट - 'कीबोर्ड। मॉडिफायर्स' पर देखें। – ChrisF

1

सीधे शब्दों में विशिष्ट नियंत्रण पर key_press या Key_Down ईवेंट हैंडलर की जांच और WPF के लिए तरह की जाँच करें:

if (e.Key == Key.Delete) 
{ 
    e.Handle = false; 
} 

विण्डोज़ फॉर्म्स के लिए:

if (e.KeyCode == Keys.Delete) 
{ 
    e.Handled = false; 
} 
26

MVVM का उपयोग करते समय डब्ल्यूपीएफ के साथ आप इनपुट बाइंडिंग का उपयोग कर XAML में keypressed कैप्चर कर सकते हैं।

  <ListView.InputBindings> 
       <KeyBinding Command="{Binding COMMANDTORUN}" 
          Key="KEYHERE" /> 
      </ListView.InputBindings> 
+1

मुझे आश्चर्य है कि यह अधिक अपवर्तित क्यों नहीं हुआ: अवधारणा यह एक बहुत साफ तरीका है। – Vlad

+0

मैं Vlad से सहमत हूं, यह करने के लिए यह एक बहुत ही साफ तरीका है। +1 – Jeff

+0

कुछ घटकों पर आप बाइंडिंग को परिभाषा में सही तरीके से रख सकते हैं (मुझे नहीं पता कि यह बहुत आम है, या एक विशिष्ट टेलरिक चीज़ है): Jeff

संबंधित मुद्दे