2009-10-01 17 views

Odpowiedz

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"; 

(Bezwstydnie podnoszone z moim własnym blogu. Bind a ComboBox to a generic Dictionary)

Oznacza to, że można używać SelectedValue zdobyć odpowiedniego klucza słowniku dla wybranego elementu w ListBox.

+0

Czy rzeczywiście wymaga "BindingSource"? –

+1

Tak, z mojego doświadczenia, potrzebuje BindingSource. –

+0

Próbowałem tego i działa częściowo, tzn. Jeśli to zrobię, po ustawieniu źródła danych dla listbox: wybory ["M"] = "abc"; choice.Remove ("T"); Listbox nie odzwierciedla zmian w słowniku opcji ... –

0

Myślę, że możesz wykorzystać do tego zdarzenia. Ilekroć coś zmieni się w ListBox, metoda eventHandler doda/usunie to samo ze słownika.

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(); 


     }