人気ブログランキング | 話題のタグを見る
(.Net)DictionaryEntryを使ってコンボボックスに表示文字列と処理用の値をセットする
ComboBox.Items.Add() や ComboBox.Items.AddRange() を使うとコンボボックスのリストに出てくる項目を追加することができますが、1つ(表示用)しか追加できません。なので、リストに表示するデータとそれに対応した処理用の値とを入れることができません。

で、ComboBox.DataSource プロパティを用い DataSet や DataTable 等をバインドさせて、ComboBox.DisplayMember プロパティと ComboBox.ValueMember プロパティで表示用の列と処理用の値の列を指定できることは知っていました。

しかし、簡単なデータをコンボボックスにセットするのに、いちいち DataTable を作成し、列を定義し…とするのは面倒だなと思っていたら、.Net にはキーと値を持てる便利な構造体があったんですね。

それが、System.Collections.DictionaryEntry 構造体です。
これは "Key" と "Value" という Object 型のプロパティを持っているので、Key プロパティに表示用データ、Value プロパティに値を入れ、DictionaryEntry を ArrayList でコレクションにすることで、手軽にコンボボックスに表示データと値をセットできそうです。

こんな感じになります。
'cmbTest は ComboBox オブジェクト
Dim lstCmbItems As New ArrayList()
lstCmbItems.Add(New DictionaryEntry("データ1", 0))
lstCmbItems.Add(New DictionaryEntry("データ2", 1))
lstCmbItems.Add(New DictionaryEntry("データ3", 2))
cmbTest.DataSource = lstCmbItems
cmbTest.DisplayMember = "Key"
cmbTest.ValueMember = "Value"

by jehoshaphat | 2009-03-11 22:02 | .Net開発


<< (SQL)SELECT句に副問... (.Net)DataTable... >>