ここではコンボボックス(ComboBoxコントロール)に2つ以上の値を持たせる方法について紹介します。
項目を追加する
以下はDataTableを使って、コンボボックスにコードと名称の2つの値を追加する例です。コンボボックスには名称を表示してコードは隠します。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
' テキストボックス部分は編集不可にする
Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
' データテーブルの作成
Dim dt As New DataTable
dt.Columns.Add("code")
dt.Columns.Add("name")
Dim dtrow As DataRow
dtrow = dt.NewRow
dtrow("code") = String.Empty
dtrow("name") = String.Empty
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "001"
dtrow("name") = "北海道"
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "002"
dtrow("name") = "東北"
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "003"
dtrow("name") = "関東"
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "004"
dtrow("name") = "中部"
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "005"
dtrow("name") = "近畿"
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "006"
dtrow("name") = "中国"
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "007"
dtrow("name") = "四国"
dt.Rows.Add(dtrow)
dtrow = dt.NewRow
dtrow("code") = "008"
dtrow("name") = "九州・沖縄"
dt.Rows.Add(dtrow)
' コンボボックスの設定
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "name"
ComboBox1.ValueMember = "code"
End Sub
7行目~55行目でコンボボックスに表示する2つの項目をDataTableとして作成します。
58行目でComboBoxコントロールのDataSourceプロパティにDataTableをセットします。
59行目でDisplayMemberプロパティに画面に表示する列名を指定します。
60行目でValueMemberプロパティに表示しない内部データの列名を指定します。
選択されている情報を取得する
以下は、ボタンをクリックしたらDataRowViewを使って、選択したコンボボックスの2つの値を取得して表示させる例です。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 選択したデータをDataRowViewにセットする
Dim selectItem As DataRowView = CType(Me.ComboBox1.SelectedItem, DataRowView)
Dim strCode = selectItem.Row.ItemArray(0) ' コードの取得
Dim strName = selectItem.Row.ItemArray(1) ' 名称の取得
MessageBox.Show(strCode & ":" & strName)
End Sub
以上、コンボボックス(ComboBoxコントロール)に2つ以上の値を持たせる方法について解説しました。