मुझे फ़ॉर्म पर सभी नियंत्रणों के लिए एक ही ईवेंट हैंडलर सेट करने में समस्या है। मैं अपने आवेदन में समान रूप से दबाए गए f5-f7 बटन को संभालना चाहता हूं, इसलिए मैं फ़ॉर्म पर सभी नियंत्रणों के लिए एक ही ईवेंट हैंडलर को पंजीकृत करने का प्रयास करता हूं। मैं InitializeComponent मेंफॉर्म पर सभी नियंत्रणों के लिए एक ईवेंट हैंडलर
foreach (System.Windows.Forms.Control cont in this.Controls)
cont.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyPress);
डाला() फ़ंक्शन बस से पहले स्वचालित रूप से उत्पन्न ResumeLayout/PerformLayout कहता है। MainForm_KeyPress नाम को ध्यान में रखें, यह वास्तव में अब एक KeyDown ईवेंट हैंडलर है।
मैंने अपने init() फ़ंक्शन में कोड डालने का भी प्रयास किया जिसे कन्स्ट्रक्टर से कहा जाता है। लेकिन परिणाम वही था: जब मैं कुंजी दबाता हूं तो ईवेंट नहीं होता है। फ़ोकस फ़ॉर्म के बटनों में से एक पर है।
लेकिन अगर मैं डिज़ाइन टूल (प्रतिलिपि समारोह फ़ील्ड में कॉपी फ़ंक्शन नाम) का उपयोग करके बटनों में से एक के लिए हैंडलर लागू करता हूं, तो बटन फोकस में होने पर ईवेंट सही ढंग से बढ़ता है।
कोई विचार क्यों foreach काम नहीं किया?
एक घटना हैंडलर उन सभी पर शासन करने के लिए? – jason
कृपया अपने शीर्षक "सी #:" के साथ उपसर्ग न करें। यही टैग है। –
@ जेसन - और अंधेरे में डेटा-उन्हें बांधें। – TrueWill