मैं अपने विंडोज फॉर्म प्रोजेक्ट पर कुछ समय से काम कर रहा हूं, और मैंने कीबोर्ड शॉर्टकट के साथ प्रयोग करने का फैसला किया है। थोड़ा पढ़ने के बाद, मुझे लगा कि मुझे सिर्फ एक इवेंट हैंडलर लिखना है और इसे फ़ॉर्म की कीडाउन इवेंट में बाँध देना है:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Alt && e.KeyCode == Keys.O)
{
MessageBox.Show("Ctrl+Alt+O: magic!");
}
}
मैंने विजुअल स्टूडियो डिज़ाइनर के गुण पैनल को खोलने का अच्छा राजभाषा तरीका अपनाया, फिर Form1_KeyDown
इवेंट हैंडलर को बनाने के लिए मेरे फॉर्म के कीडाउन इवेंट पर डबल-क्लिक किया । लेकिन मेरे आवेदन का परीक्षण करने पर, प्रपत्र Ctrl+ Alt+ Oकीबोर्ड शॉर्टकट पर बिल्कुल भी प्रतिक्रिया नहीं देता है । विज़ुअल स्टूडियो डिज़ाइनर ने इवेंट हैंडलर को फॉर्म में बाँधने के लिए कोड उत्पन्न किया है:
private void InitializeComponent()
{
// ...
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
// ...
}
इसलिए मैंने Console.WriteLine()
हैंडलर को यह जाँचने के लिए एक कॉल जोड़ने की कोशिश की कि यह बिल्कुल भी कॉल किया जा रहा है, लेकिन उस पर कोई भाग्य नहीं।
इसके अलावा, मैंने इवेंट बाइंडिंग कॉल (ऊपर दिखाया गया है) पर एक ब्रेकपॉइंट सेट करने की कोशिश की और पाया कि प्रोग्राम उस ब्रेकपॉइंट पर ठीक पहुंचता है। लेकिन किसी भी ब्रेकप्वाइंट को मैंने विधि परिभाषा के भीतर ही सेट किया है, कभी नहीं पहुंचा।
यह सुनिश्चित करने के लिए कि मैं पहले कुछ कदम सही ढंग से कर रहा था, मैंने उन्हें दोहराने की कोशिश की:
उसी समाधान में एक नया रूप।
एक ही मुद्दा: जब मैं मेरा Ctrl+ Alt+ Oकीबोर्ड शॉर्टकट दबाता हूं तो फॉर्म प्रतिक्रिया नहीं देता है और डिबगर ईवेंट हैंडलर में भी कदम नहीं रख रहा है।फिर से कोशिश की और यह काम करता है।एक नया WinForms समाधान।
यह पूरी तरह से काम करता है: संदेश संवाद प्रकट होता है (Console.WriteLine()
कॉल भी काम करता है)।
इसलिए मैं यहां काफी खो गया हूं। KeyDown ईवेंट प्राप्त करने से इस एक प्रोजेक्ट के सभी फ़ॉर्म क्या रोक रहे हैं?