2009-10-01 15 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のを使用できることを意味します。

+0

実際には 'BindingSource'が必要ですか? –

+1

私の経験ではBindingSourceが必要です。 –

+0

これを試してみましたが、部分的に動作します。つまり、リストボックスのデータソースを設定した後です。 ["M"] = "abc"; choices.Remove( "T"); リストボックスは選択辞書の変更を反映していません... –

0

私はあなたがイベントを使用できると思います。 ListBoxで何かが変更されると、eventHandlerメソッドはDictionaryから同じものを追加/削除します。

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


     }