2009-10-01 10 views

उत्तर

35
var choices = new Dictionary<string, string>(); 
choices["A"] = "Arthur"; 
choices["F"] = "Ford"; 
choices["T"] = "Trillian"; 
choices["Z"] = "Zaphod"; 
listBox1.DataSource = new BindingSource(choices, null); 
listBox1.DisplayMember = "Value"; 
listBox1.ValueMember = "Key"; 

(बेशर्मी मेरे अपने ब्लॉग से उठा लिया। Bind a ComboBox to a generic Dictionary)

इसका मतलब है आप SelectedValue उपयोग कर सकते हैं ListBox में चयनित आइटम के लिए इसी शब्दकोश कुंजी की पकड़ पाने के लिए।

+0

क्या वास्तव में वहां 'बाध्यकारी स्रोत' की आवश्यकता है? –

+1

हाँ मेरे अनुभव में इसे बाध्यकारी स्रोत की आवश्यकता है। –

+0

मैंने यह कोशिश की है, और यह आंशिक रूप से काम करता है, यानी यदि मैं ऐसा करता हूं, तो सूची बॉक्स के लिए डेटास्रोत सेट करने के बाद: विकल्प ["एम"] = "एबीसी"; विकल्प। हटाएं ("टी"); सूची बॉक्स विकल्प शब्दकोश में परिवर्तनों को प्रतिबिंबित नहीं करता है ... –

0

मुझे लगता है कि आप इसके लिए ईवेंट का उपयोग कर सकते हैं। जब भी ListBox में कुछ बदलता है, तो एक ईवेंट हैन्डलर विधि शब्दकोश से एक ही चीज़ जोड़/निकाल देगा।

0
 label1.Text= listBox1.SelectedIndex.ToString(); 

     if (listBox1.SelectedItem is KeyValuePair<int,DockStyle>) 
     { 

      var temp1 = (KeyValuePair<int, DockStyle>)listBox1.SelectedItem; 
      label3.Text = temp1.Key.ToString(); 
      label4.Text = temp1.Value.ToString(); 


     }