2009-10-01 6 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

Действительно ли это требует 'BindingSource' там? –

+1

Да, в моем опыте ему нужен BindingSource. –

+0

Я пробовал это, и он работает частично, т.е. если я это сделаю, после установки источника данных для списка: [[M]] = "abc"; choice.Remove ("T"); listbox не отражает изменения в словаре выбора ... –

0

Думаю, вы можете использовать для этого события. Всякий раз, когда что-то изменяется в ListBox, метод eventHandler добавляет/удаляет то же самое из словаря.

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


     } 
Смежные вопросы