2011-07-11 16 views
5

मुझे कोई समस्या है जहां कॉम्बोबॉक्स पर मेरी चुनीValueChanged() ईवेंट, मेरे विंडोज फॉर्म एप्लिकेशन को लोड करने के दौरान ट्रिगर किया जा रहा है। वर्तमान में, मेरे पास एक फॉर्म_लोड() ईवेंट भी है जो ओलेडबडाटाएडाप्टर/डेटाटेबल्स/फिल() इत्यादि का उपयोग करते हुए कई कॉम्बोबॉक्स लोड कर रहा है।विंडोज़ फॉर्म एप्लिकेशन में फॉर्म लोड के दौरान चयनित वैल्यू चेंज() ईवेंट फायरिंग

मुझे लगता है कि मेरे Form_Load() विधि के कारण, SelectedValueChanged ईवेंट कॉम्बोबॉक्स भरने के डेटा के कारण ट्रिगर किया जा रहा है।

ऐसा क्यों हो रहा है?

+0

काम करना चाहिए आप घटना दीक्षा के दौरान उठाया जा नहीं करना चाहते हैं, जिनकी वजह से आपके प्रपत्र प्रारंभ की सब के बाद घटना की सदस्यता नहीं हो गया? –

उत्तर

4

फॉर्म में कॉम्बोबॉक्स में आइटम लोड करने से पहले लोड ईवेंट, ईवेंट के लिए सदस्यता रद्द करें। बाध्यकारी डेटा फिर से घटना की सदस्यता लेने के बाद।

Form_Load(..) 
{ 
    _comboBoxName.SelectedValueChanged -= _comboBoxName_SelectedValueChanged; 

    // Load data to the combo box... 

    _comboBoxName.SelectedValueChanged += _comboBoxName_SelectedValueChanged; 
} 
+0

बहुत बढ़िया! यह बहुत अच्छा है, धन्यवाद। –

+0

@ जेम्स डर्मन: बढ़िया, अपने प्रश्न के उत्तर का चयन न करें। – CharithJ

+0

@ जेम्स: अगर इस उत्तर में आपकी समस्या हल हो गई है, तो इसे सही मानने के लिए मत भूलना – Grace

3

यह घटना शायद ComboBox में पॉप्युलेट होने वाले डेटा की वजह से निकाल दी जा रही है। सबसे अच्छा अनुशंसित फिक्स नियंत्रण शुरू होने के बाद घटनाओं की सदस्यता लेना होगा।

एक और सरल फिक्स एक पूर्ण रूप से लोड होने पर एक बूलियन ध्वज असाइन करना है। इस ध्वज का उपयोग आपके ईवेंट में किसी भी कॉल को अनदेखा करने के लिए किया जा सकता है जब तक कि फॉर्म लोड नहीं हो जाता (उदा। FormLoaded = true)।

+0

मैं सोच रहा था कि यह मामला हो सकता है! धन्यवाद। –

0
rbtalldivision_CheckedChanged(sender, e); 
rbtAllSitecodes_CheckedChanged(sender, e); 

खिड़कियों में एकाधिक ईवेंट callling के लिए आवेदन यह

संबंधित मुद्दे