दिलचस्प पोस्ट
फ्लोट एक फ्लेक्स कंटेनर में काम नहीं करता SPAN के लिए ऊंचाई की संपत्ति कैसे सेट करें पूर्ण विशेषाधिकार के साथ जावा फाइल को व्यवस्थापक के रूप में चलाएं स्ट्रिंग लीटरल्स का कूड़ा संग्रह जीआईटी के पतले पैक क्या हैं? कैसे jQuery 'स्वाधीन मान्यकरण' का उपयोग करते समय एक 'submitHandler' फ़ंक्शन जोड़ने के लिए? क्यों सी # डिफ़ॉल्ट रूप से गैर-वर्चुअल रूप से लागू करता है? में अंतर्निहित एनिमेशन को अक्षम करना – IFRAMEs और iPad पर सफारी, कैसे उपयोगकर्ता सामग्री स्क्रॉल कर सकते हैं? एएसपी .नेट एमवीसी और आईई कैशिंग – हेरिएट रिस्पांस हेडर अप्रभावी कृपया exec () फ़ंक्शन और उसके परिवार की व्याख्या करें पासवर्ड संकेत पर उपयोगकर्ता इनपुट छिपाएं ओरेकल "(+)" ऑपरेटर मैं ScheduledThreadPoolExecutor, टाइमरटैक्स, या हैंडलर कहां बना सकता हूं? संसाधन के रूप में MySQL और PHP पैरामीटर 1

नियंत्रण क्यों नहीं निकालना चाहते हैं?

मैं उन सभी नियंत्रणों को हटाने की कोशिश कर रहा हूं जो कि मेरे विनफ़ॉर्म पैनल में शामिल हैं, लेकिन वे आसानी से हटाना नहीं चाहते हैं – उनमें से कुछ निकाल दिए जाते हैं और उनमें से कुछ नहीं। मैंने पहले से ही 2 तरीकों की कोशिश की है और कुछ नहीं:

  1. प्रत्येक के लिए

    foreach (Control controlEntry in this.contentsPanel.Controls) { this.contentsPanel.Controls.Remove(controlEntry); } 
  2. के लिये

     for (int i = 0; i < this.contentsPanel.Controls.Count; i++) { this.contentsPanel.Controls.RemoveAt(i); } 

ये क्यों हो रहा है ?

Solutions Collecting From Web of "नियंत्रण क्यों नहीं निकालना चाहते हैं?"

आपको इस तरह से कोड के लिए बाहर देखना होगा, अपने कंटेनर से नियंत्रण निकालते हुए इस तरह से एक अप्राप्य संसाधन रिसाव का उत्पादन होगा। नियंत्रण। निकालें / एट (), या अन्य पोस्टर द्वारा सुझाई जाने वाली कंट्रोल। क्लीयर () पद्धति, संग्रह से नियंत्रण को हटा देती है और इसे "पार्किंग विंडो" में फिर से होस्ट करती है। एक अन्यथा अदृश्य खिड़की जहां मूल खिड़की नष्ट होने के बिना एक मेहमाननवाज घर पा सकते हैं। दूसरे माता-पिता पर पुन: होस्ट किए जाने के लिए तैयार

कौन सा जाल है, आप आम तौर पर इसे किसी अन्य माता पिता को नहीं ले जाते हैं। निवासी विंडोज संसाधनों का उपभोग करने के लिए, पार्किंग खिड़की पर नियंत्रण जारी रहेगा। कचरा कलेक्टर इन संसाधनों को पुनर्प्राप्त नहीं कर सकते। आखिरकार आपका प्रोग्राम दुर्घटनाग्रस्त हो जाता है जब Windows आपकी प्रक्रिया के लिए अधिक विंडो प्रदान करने से इनकार करता है। अपवाद संदेश कहेंगे "संभाल बनाने में त्रुटि"

इसके बजाय, आपको नियंत्रण का निपटान करना होगा। जो स्वतः ही अपने माता पिता से नियंत्रण निकालता है। उचित कोड है:

  while (contentsPanel.Controls.Count > 0) contentsPanel.Controls[0].Dispose(); 

या पीछे की तरफ फिर से दोहराएं यदि आपको यह बहुत ही विचित्र लग रहा है।

हर बार जब आप संग्रह से नियंत्रण हटाते हैं, तो संग्रह परिवर्तन होते हैं जब आप Controls पहले तत्व को हटा देते हैं, तो दूसरा तत्व 1 होता है, इसलिए जब आप दूसरे नियंत्रण को हटाना चाहते हैं, तो आप मूल संग्रह (तीसरे तत्व को छोड़कर) से तीसरा तत्व निकाल रहे हैं।

यदि आप संग्रह में शामिल सभी नियंत्रणों को हटाना चाहते हैं, तो इस this.contentsPanel.Controls.Clear() उपयोग करें। this.contentsPanel.Controls.Clear() । नियंत्रण। this.contentsPanel.Controls.Clear() अगर आप नियंत्रण ControlCollection में उनके सूचकांक द्वारा नियंत्रणों को निकालना चाहते हैं, तो सूची या सरणी को अलग करने के लिए पहले नियंत्रण चुनें और फिर उन्हें निकालें।

अगर आप उन सभी को हटाना चाहते हैं तो बस करो

 this.contentsPanel.Controls.Clear() 

फोरैश विफल होगा क्योंकि आप संग्रह को बदल रहे हैं, जो इटरेटर को तोड़ता है।

विफलता के लिए क्योंकि आप केवल हर दूसरे आइटम को निकाल रहे हैं; विचार करें: i = 0, आप शून्य वस्तु को हटा दें अब वह आइटम जो आइटम 1 था आइटम 0 है – इसलिए जब आप आइटम 1 (अगले लूप इरेस्ट्रेशन) निकालते हैं, तो आपने एक कूद लिया है

लघु संस्करण: उपयोग Clear() :

 contentsPanel.Controls.Clear(); 

लंबा संस्करण: पीछे की ओर फिर से चलना:

 for(int i=contentsPanel.Controls.Count-1; i>=0;i--) { contentsPanel.Controls.RemoveAt(i); } 

पहला (साफ़) सरल है