2009-10-01 8 views

risposta

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

(spudoratamente sollevato dal mio blog:. Bind a ComboBox to a generic Dictionary)

Ciò significa che è possibile utilizzare SelectedValue di entrare in possesso della chiave di dizionario corrispondente per l'elemento selezionato nella ListBox.

+0

In realtà richiede un 'BindingSource' lì? –

+1

Sì, nella mia esperienza ha bisogno di BindingSource. –

+0

Ho provato questo, e funziona parzialmente, cioè se lo faccio, dopo aver impostato l'origine dati per listbox: scelte ["M"] = "abc"; choices.Remove ("T"); la casella di riepilogo non riflette le modifiche nel dizionario delle scelte ... –

0

Penso che tu possa usare gli eventi per quello. Ogni volta che qualcosa cambia in ListBox, un metodo eventHandler aggiunge/rimuove la stessa cosa dal Dizionario.

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


     } 
Problemi correlati