2010-04-03 12 views
6

मैं (WinForm)"कीप्रेस" ईवेंट गुम है?

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys); 

एक पाठ बॉक्स में एक "कुंजी दबाने" घटना जोड़ने के लिए कोशिश कर रहा हूँ और यहाँ 'CheckKeys' के अंदर है:

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
    { 
     // Enter is pressed - do something 

    } 
} 

विचार यहाँ है कि एक बार एक पाठ बॉक्स में है फोकस और 'एंटर' बटन दबाया गया था, कुछ घटित होगा ...

हालांकि, मेरी मशीन को 'कीप्रेस' ईवेंट नहीं मिल रहा है। क्या मेरे कोड में कुछ गड़बड़ है?

अद्यतन:

मैं भी कुंजी दबाने के बजाय KeyDown डालने की कोशिश की:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 

    if (e.Key == Key.Return) 

     // Enter is pressed - do something 
    } 
} 

फिर भी काम नहीं कर रहा है, हालांकि ...

+1

आप KeyDown की तलाश करने की कोशिश की है? – Chris

+1

यह काम करना चाहिए - क्या आप वाकई अपने चेककेज़ हैंडलर को सही जगह पर सब्सक्राइब कर रहे हैं? क्या होता है यदि आप संदेश बॉक्स चुनें। (अपने। – pduncan

+0

@ क्रिस: काम नहीं कर रहा है। मैं एंटर दबाकर बटन पर क्लिक करने के समान ही एक ईवेंट बनाने की कोशिश कर रहा था। – abramlimpin

उत्तर

9

आप कक्षा पुस्तकालयों को मिश्रित कर रहे हैं, एक WPF प्रोजेक्ट में विंडोज फॉर्म कक्षाओं का उपयोग न करें। इसे इस तरह दिखें:

public partial class Window1 : Window { 
    public Window1() { 
     InitializeComponent(); 
     this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown); 
    } 

    private void textBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.Key == Key.Enter) { 
     MessageBox.Show("Enter!"); 
     e.Handled = true; 
     } 
    } 
    } 
6

आप KeyPress पर documentation को देखा है? यह विशेष रूप से बताता है कि कुंजीपटल घटना गैर-कैरेक्टर कुंजी द्वारा नहीं उठाई जाती है; हालांकि, noncharacter कुंजी कुंजीडाउन और कीप घटनाओं बढ़ाते हैं। उन घटनाओं में से एक का उपयोग करने के बजाय काम करना चाहिए।

+0

@Anders: इसके बजाय KeyDown का उपयोग करने का प्रयास किया। मैं एंटर दबाकर स्टोरीबोर्ड (डब्ल्यूपीएफ से) फोन करने की कोशिश कर रहा था, लेकिन कुछ भी नहीं हुआ। – abramlimpin

-4

निम्नलिखित चरणों का प्रयास करें जो यह काम करेगा, bcoz मैंने इसका परीक्षण किया है।

  1. टेक्स्टबॉक्स का चयन करें, राइट क्लिक करें, फिर गुणों पर क्लिक करें। घटना पर
  2. क्लिक करें, तो कुंजी दबाने
  3. पर डबल क्लिक करें उसके बाद निम्न कोड टाइप करें।

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e) 
    { 
        if (e.KeyChar == (char)13) 
        {    
         //press Enter do Something Like i have messagebox below to show "wow" 
         MessageBox.Show("wow"); 
        } 
        else 
        { 
        } 
    } 
    
+4

यह काम करता है * becuase * आपने इसका परीक्षण किया? –

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