2010-05-08 22 views
14

मेरे पास कोई आसान सवाल है कि किसी ने मुझसे पहले यह पूछा हो लेकिन मुझे यह नहीं मिला। मान लें कि मेरे पास डेटाटेबल है जिसमें डेटाबेस से कुछ डेटा है और मैं इसे एक combobox से बांधना चाहता हूं, मैं स्टैंडएट कोड का उपयोग करता हूं इसकॉमोबॉक्स घटना चयनित वैल्यू चेंज

comboBox1.BeginUpdate(); 
comboBox1.ValueMember = "id"; 
comboBox1.DisplayMember = "name"; 
comboBox1.DataSource = dt; 
comboBox1.EndUpdate(); 

समस्या यह है के दौरान इस बंधन घटना SelectedValueChanged fired.The समस्या यह है कि कॉम्बो कई बार जब outher मूल्यों को बदल rebind और हर बार मैं इस

comboBox1.SelectedIndexChanged -= new System.EventHandler(this.comboBox1_SelectedValueChanged); 

मेरे सवाल की तरह sometihn करना चाहिए है छोड़ने के लिए एक शानदार तरीका है घटना जब मैं उपयोगकर्ता input.The समस्या से नहीं databinding से आता है कि मैं इसे कुछ कैसे globaly मेरे नियंत्रण कि बता गया विरासत और शुभकामनाओं सहित,
Iordand

+1

आप किसी अन्य तरीके से लगता है कि कर सकते हैं: यू एक वैश्विक चर गलत पर और उस पर इस घटना की जांच में यह सेट और बाद यू को पूरा सभी बांध यह स्थापित करने के लिए सही –

उत्तर

18

का उपयोग कर घटना SelectionChangeCommitted प्रयास करें है।

MSDN प्रलेखीकरण से:

SelectionChangeCommitted उठाया है केवल जब उपयोगकर्ता कॉम्बो बॉक्स चयन बदल जाता है। का प्रयोग न करेंSelectedIndexChanged या SelectedValueChangedउपयोगकर्ता बदलता है कब्जा करने के लिए है, क्योंकि उन घटनाओं हैं भी उठाया जब चयन प्रोग्राम के रूप में बदल जाता है।

+0

मुझे कुछ समय बचा लिया, धन्यवाद कर सकते हैं। –

0

मैं से हर में यह हर नहीं करने के लिए में क्या करना चाहते है अंतरिक्ष क्रैकर के रूप में हमेशा किया जाता है। मैं _isLoading नामक एक वैश्विक बुलियन वैरिएबल बनाता हूं और इसे अपने कम्बोबॉक्स लोड करते समय सत्य पर सेट करता हूं, फिर इसे पूरा होने पर गलत पर वापस चला जाता है। तब ईवेंट हैंडलर में पहली पंक्ति

if(_isLoading) return; 
संबंधित मुद्दे