क्योंकि आपका UserControl ListControl के रूप में कार्य करता है, तो आपको दो ईवेंट और दो गुणों को लागू करने की आवश्यकता होती है।
public event System.EventHandler SelectedIndexChanged;
public event System.EventHandler SelectionChangeCommitted;
public int SelectedIndex {
get;
set;
}
public T SelectedItem { // Where T is whatever your type is
get;
set;
}
SelectedIndexChanged
हमेशा कार्रवाई है कि हमेशा जब आपके चयनित सूचकांक बदल गया है शुरू किया जा करने की आवश्यकता है के लिए इस्तेमाल किया जाना चाहिए। SelectionChangeCommitted
केवल ट्रिगर हो सकता है जब उपयोगकर्ता शारीरिक रूप से चयन को बदलता है। दोनों के बीच अलगाव एक महत्वपूर्ण भेद है, और .NET में अधिकांश नियंत्रण इस पैटर्न का पालन करते हैं (उदाहरण के लिए कॉम्बोबॉक्स), लेकिन घटनाओं के लिए समान नाम का उपयोग नहीं कर सकते हैं।
अब, इसके साथ, यदि आपके लिए गुणों को बदलने के लिए आवश्यक नियंत्रण भी एक ही उपयोगकर्ता नियंत्रण में हैं, तो आपको उचित घटना में उपयोगकर्ता नियंत्रण कोड के भीतर निश्चित रूप से संभालना चाहिए। अन्यथा, कोड को अनाथ होना चाहिए जो भी उपयोगकर्ता नियंत्रण लागू करता है (उदाहरण के लिए।एक फॉर्म या अन्य उपयोगकर्ता नियंत्रण) घटना की सदस्यता लेकर और वहां काम कर रहा है।
आदेश वास्तव में अपनी आवश्यकताओं पर निर्भर करता है, लेकिन SelectedIndexChanged
हमेशा उठाया जाना चाहिए (लेकिन एक बार परिवर्तन यह है कि अजीब व्यवहार का परिचय के रूप में प्रति अधिक से अधिक), और फिर SelectionChangeCommitted
केवल उपयोगकर्ता द्वारा उठाया जाना चाहिए (उदाहरण के लिए। सेटिंग चयनित इंडेक्स या चयनित इटिम)।
अंगूठे का एक अच्छा नियम यह है कि यदि उपयोगकर्ता को इसके बारे में पता करने से पहले आपकी आंतरिक सामग्री होनी चाहिए, तो पहले चयनित चेंज को कॉल करें, फिर चयन बदलें। अगर इससे कोई फर्क नहीं पड़ता, तो या तो। बाद में ऑर्डर बदलने से परिणाम में कोई भी बदलाव हो सकता है, इसलिए सुनिश्चित करें कि आपका निर्णय ठोस है।
दोनों के बीच का अंतर चयनित इंडेक्स और चयनित इटैम को आपकी सूची को आंतरिक रूप से साफ़ करने, नई वस्तुओं को जोड़ने, और कैटरिया जैसी चीजों द्वारा अपडेट किया जाएगा, लेकिन इसका मतलब यह नहीं है कि यह एक भौतिक उपयोगकर्ता क्रिया है जिसके परिणामस्वरूप आपके ईवेंट फायरिंग हो सकते हैं ।
उम्मीद है कि इससे मदद मिलती है।
लागू नहीं कर रहा हूं इस तथ्य को ध्यान में रखते हुए कि विरासत वर्ग वास्तव में मेरी बेस क्लास को ओवरराइड कर सकता है, दृष्टिकोण में कुछ परिप्रेक्ष्य रखता है। धन्यवाद। – PedroC88