2009-10-01 8 views

Répondre

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

(Shamelessly levé de mon propre blog. Bind a ComboBox to a generic Dictionary)

Cela signifie que vous pouvez utiliser SelectedValue pour mettre la main sur la clé de dictionnaire correspondante pour l'élément sélectionné dans la zone de liste.

+0

Existe-t-il réellement un 'BindingSource' là? –

+1

Ouais dans mon expérience, il a besoin de la BindingSource. –

+0

J'ai essayé ceci, et cela fonctionne partiellement, c'est-à-dire si je le fais, après avoir défini la source de données pour la liste: choix ["M"] = "abc"; choix.Retirer ("T"); la liste ne reflète pas les changements dans le dictionnaire de choix ... –

0

Je pense que vous pouvez utiliser des événements pour cela. Chaque fois que quelque chose change dans ListBox, une méthode eventHandler va ajouter/supprimer la même chose du dictionnaire.

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


     } 
Questions connexes