मैंने एक कस्टम उपयोगकर्ता नियंत्रण बनाया है, जो अनिवार्य रूप से मेरे विंडोज़ फॉर्म ऐप के भीतर एक कस्टम बटन है। मैंने निम्नलिखित कोड का उपयोग करने के लिए क्लिक ईवेंट के रीडायरेक्ट को प्रबंधित किया:

Control[] customButtonControls = button.Controls.Find("buttonInUserControl", false);
Button nestedButton = (Button)customButtonControls[0];
nestedButton.Click += new System.EventHandler(this.button_click_handling_function);

मैंने इसे नियंत्रण के लिए जेनरेट कोड के नीचे Window_Name.Designer.cs फ़ाइल में जोड़ दिया है और मेरी button_click_handling_function को मेरी Window_Name.cs फ़ाइल में परिभाषित किया जा रहा है।

मुद्दा यह है कि जब मैं Window_Name.cs[Design] पृष्ठ पर वापस क्लिक करता हूं, तो मुझे एक त्रुटि पृष्ठ मिलता है। मैं त्रुटियों को बेहतर ढंग से दिखाने के लिए स्क्रीन शॉट्स शामिल करूंगा। मूल रूप से यह एक सुपर अनुपयोगी पृष्ठ है। यह मुझे बताता है कि मेरे पास मेरे ऐरे पर रेंज त्रुटि से बाहर एक इंडेक्स है, लेकिन स्टैक कॉल का कोई मतलब नहीं है।

अगर मैं अपना समाधान बनाने का प्रयास करता हूं, तो मुझे कोई संकलन त्रुटियां नहीं मिलती हैं और मेरा प्रोग्राम बिल्कुल इरादे से कार्य करता है। क्लिक इवेंट पहले की तरह ही फंक्शन को ट्रिगर करता है।

अग्रिम में धन्यवाद।

WinForms Error ScreenGrab

1
Josh 12 जून 2019, 03:39

1 उत्तर

सबसे बढ़िया उत्तर

डिज़ाइनर कोड के भाग डिज़ाइन-समय पर चलाए जाते हैं। इंडेक्स आउट ऑफ़ रेंज एरर शायद इसलिए है क्योंकि डिज़ाइन-टाइम पर उस फाइंड कॉल द्वारा अभी तक कोई नियंत्रण नहीं मिला है, इसलिए एरे खाली है। आप 0 लंबाई की जांच नहीं कर रहे हैं, इसलिए जब आप इसे संदर्भित करते हैं तो आपको त्रुटि मिलती है। यह रन-टाइम पर काम करता है क्योंकि उस समय नियंत्रणों को तत्काल कर दिया गया है।

दूसरी समस्या यह है कि आपको चीज़ों को Designer.cs फ़ाइलों में नहीं डालना चाहिए क्योंकि वह कोड डिज़ाइनर द्वारा स्वतः उत्पन्न होता है और किसी बिंदु पर पुन: उत्पन्न किया जा सकता है और आपका जोड़ा कोड खो जाता है। उस कोड को InitializeComponent कॉल के बाद Window_Name.cs में रखें।

0
Jeff R. 12 जून 2019, 19:50