2013-07-30 9 views
5

मैं एक डिवाइस ऐप डिज़ाइन कर रहा हूं। कॉम्पैक्ट फ्रेमवर्क 2.0कीप्रेस एफ 1 काम नहीं करता है सी #

मैं चाहता हूं कि उपयोगकर्ता अगली स्क्रीन पर नेविगेट करने के लिए F1 दबाए, लेकिन यह काम नहीं करता है।

कोई समाधान नहीं ढूंढ रहा है।

क्या यह संभव है?

यह काम करता है::

 if (e.KeyChar == (char)Keys.M) 
     { 
      MessageBox.Show("M pressed"); 
      e.Handled = true; 
     } 

यह काम नहीं डॉस:

 if (e.KeyChar == (char)Keys.F1) 
     { 
      MessageBox.Show("F1 pressed"); 
      e.Handled = true; 
     } 
+4

"डुप्लिकेट": http://stackoverflow.com/questions/5951496/how-do-i-capture-keys-f1-regardless-of-the-focused-control-on-a-form –

+0

क्या आप चाहते हैं इसे सी # या जावास्क्रिप्ट में प्राप्त करने के लिए? –

+0

डीबगिंग के बारे में कैसे? – Reniuz

उत्तर

4

इस

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.KeyPreview = true; 
    this.KeyDown += new KeyEventHandler(Form1_KeyDown); 
} 

void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode.ToString() == "F1") 
    { 
     MessageBox.Show("F1 pressed"); 
    } 
} 
+0

धन्यवाद, रमेश –

+0

हैप्पी कोडिंग !!! –

+2

हालांकि यह वास्तव में काम करता है, मुझे सच में लगता है कि आपको किसी अन्य उत्तर पर विचार करना चाहिए - स्ट्रिंग की तुलना करने के बजाय, एनम मानों का उपयोग करें। –

0

उपयोग KeyDown बजाय कोशिश

इस तरह मैं सामान्य रूप से कीप्रेस का उपयोग करें ओ च KeyPress:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyData == Keys.F1) 
    { 
     // your code here 
    } 
} 

इसके अलावा true

7

को KeyPreview सेट का उल्लेख This

आप अपने प्रपत्र वर्ग के ProcessCmdKey विधि ओवरराइड और keyData == Keys.F1 का उपयोग F1 दबाया जाता है कि क्या जांच करने के लिए कर सकते हैं। उपरोक्त लिंक के रूप में उदाहरण है।

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.F1) 
    { 
     MessageBox.Show("You pressed the F1 key"); 
     return true; // indicate that you handled this keystroke 
    } 

    // Call the base class 
    return base.ProcessCmdKey(ref msg, keyData) 
} 
2

कुछ कुंजी (F1, F2, तीर कुंजी, टैब ....) की तरह उस के लिए keychar द्वारा "पर कब्जा कर लिया" नहीं किया जा सकता आप कीकोड उपयोग करने की आवश्यकता:

if (e.KeyCode == Keys.F1) 
{ 
    // do stuff 
} 

keychar संपत्ति - http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.keychar.aspx

+0

इसे साफ़ करने के लिए धन्यवाद। –

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