2016-04-14 8 views
6

मेरे पास एक परियोजना में DropDownList है।ड्रॉपडाउन सूची जांचें कि सूचकांक कोड द्वारा या चयन द्वारा

private void cbo_SelectedIndexChanged(object sender, EventArgs e){......} 

यह अगर सूचकांक कोड में बदल गया था जांच करने के लिए, की तरह संभव है:: इस DropDownList एक SelectedIndexChanged घटना में शामिल है

cbo.SelectedIndex = placering; 

, या यदि परिवर्तन उपयोगकर्ता बातचीत से हुआ?

उत्तर

5

चूंकि ड्रॉपडाउनलिस्ट में Focused संपत्ति नहीं है क्योंकि यह WinForms में नियंत्रण है, यह इतना आसान नहीं है। एक तरीका कस्टम ध्वज जोड़ना है, और SelectedIndex संपत्ति को बदलने से पहले इसके मूल्य को बदलना है। ईवेंट हैंडलर के अंदर आप इस ध्वज के लिए जाँच करें और अपने मूल्य रीसेट कर सकते हैं: कोड में कहीं फिर

private volatile bool isAutoFired = false; 

:

isAutoFired = true; 
cbo.SelectedIndex = placering; 


private void cbo_SelectedIndexChanged(object sender, EventArgs e) 
{  
    if(!isAutoFired) 
    { 
     // event is fired by user 
    } 

    isAutoFired = false; 
} 
+0

धन्यवाद, बस मैं जो देख रहा था! – Moelbeck

1

आप सही से पहले कोड में ईवेंट हैंडलर को दूर कर सकता है programmably तो चयन बदले इसे बाद में वापस जोड़ें। यह मेरा पसंदीदा दृष्टिकोण है। झंडे की कोई ज़रूरत नहीं है।

cbo.SelectedIndexChanged -= cbo_SelectedIndexChanged; 
cbo.SelectedIndex = 1 // or what you do to change the index 
cbo.SelectedIndexCHanged += new EventHandler(cbo_SelectedIndexChanged); 
संबंधित मुद्दे