ऐसा लगता है कि आपके पास WinForms .NET एप्लिकेशन है, और एक कॉम्बोबॉक्स ("ड्रॉपडाउन" शैली पर सेट है), और कॉम्बोबॉक्स में कई आइटम हैं समान, अजीब चीजें होती हैं। विशेष रूप से, चयनित आइटम की अनुक्रमणिका को के बिना चयनित इंडेक्स चेंज किए गए ईवेंट को फायर कर सकती है।.NET WinForms कॉम्बोबॉक्स, समान आइटम, और चयनित इंडेक्स चेंजेड इवेंट
बेशक, यह बड़े पैमाने पर भ्रम और अजीब, अस्पष्ट त्रुटियों का कारण बनता है, जो मैं हाल ही में अपने बालों को खींच रहा हूं।
यहाँ एक सरल उदाहरण आप को देखने के लिए मैं क्या बात कर रहा हूँ का उपयोग कर सकते है:
- एक नया नेट WinForms परियोजना (मैं VB.NET उपयोग करें, लेकिन अनुवाद करने के लिए स्वतंत्र लग रहा है - यह काफी सरल हो) ।
- फॉर्म पर एक कॉम्बोबॉक्स, एक बटन, और टेक्स्टबॉक्स (सेट मल्टीलाइन = ट्रू) ड्रॉप करें।
- 3 समान आइटम के साथ ComboBox लोड करने के लिए निम्नलिखित कोड का उपयोग और कुछ स्थिति संदेश जब SelectedIndexChanged का ईवेंट आग मुद्रित करने के लिए, और देखने के लिए क्या वर्तमान में चयनित सूचकांक (एक बटन के माध्यम से) है:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
TextBox1.Text = TextBox1.Text & vbNewLine & "ComboBox SelectedIndexChanged event fired." & vbNewLine & _
"SelectedIndex is: " & ComboBox1.SelectedIndex
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ComboBox1.Items.Add("John Doe")
ComboBox1.Items.Add("John Doe")
ComboBox1.Items.Add("John Doe")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = TextBox1.Text & vbNewLine & _
"Button clicked." & vbNewLine & _
"SelectedIndex is: " & ComboBox1.SelectedIndex
End Sub
प्रोजेक्ट चलाएं और कॉम्बोबॉक्स से एक आइटम चुनें (कहें, मध्य एक)। फिर, कॉम्बोबॉक्स के ड्रॉप-डाउन तीर पर क्लिक करें, लेकिन कुछ भी नहीं चुनें। बटन पर क्लिक करें (डिफ़ॉल्ट रूप से बटन 1) और देखें कि यह क्या कहता है।
जब तक मैं अपने मन खो दिया है, यहाँ आप जो देखते हैं चाहिए:
ComboBox SelectedIndexChanged event fired. SelectedIndex is: 1 Button clicked. SelectedIndex is: 0
दूसरे शब्दों में, चुने इंडेक्स परिवर्तित हो गया है, लेकिन SelectedIndexChanged का ईवेंट फायरिंग के बिना!
यह तब होता है जब कॉम्बोबॉक्स में आइटम समान होते हैं। यदि वे अलग हैं, तो ऐसा नहीं होता है। (यह तब भी नहीं होता है जब कॉम्बोबॉक्स की "ड्रॉपडाउन" शैली "ड्रॉपडाउनलिस्ट" पर सेट हो।)
मुझे संदेह है कि यह .NET ढांचे में स्वयं एक बग हो सकता है और कुछ भी मैं ठीक नहीं कर सकता, लेकिन बंद पर मौका है कि किसी और के पास क्या करना है (या मैं क्या गलत कर रहा हूं!) पर कोई विचार है, कृपया इसमें झुक जाओ! मुझे इस व्यवहार को समझाने या इसके चारों ओर काम करने की हानि हो रही है (मुझे उम्मीद है कि चयनित इंडेक्स को तब तक रहने की उम्मीद है जब तक कि आप वास्तव में कुछ और चुनकर इसे बदल दें!)
उस उत्तर के लिए आपको बहुत बहुत धन्यवाद! वह * अविश्वसनीय रूप से * जानकारीपूर्ण था! (यह जानना भी अच्छा है कि मैं पागल नहीं हूं और इस व्यवहार के लिए एक वैध स्पष्टीकरण है!) – Keithius
मैं मानता हूं कि आग्रह किया गया जवाब इसलिए मैंने जवाब दिया – MikeScott8