ComboBoxスタイル
ComboBoxのスタイルには3種類あり、DropDownStyleプロパティにより変更をします。
デフォルトではDropDownとなっています。
テキストを編集できないようにする
ドロップダウンされるリストからの選択のみを許し、テキスト編集(入力)を許可しなようにするには、ComboBoxのDropDownStyleプロパティをComboBoxStyle.DropDownListにします。
ドロップダウンリストに表示する項目数を変更する
DropDownStyleプロパティがDropDownまたはDropDownListの場合、右側のボタンを押して表示されるドロップダウンリストの項目数は、MaxDropDownItemsプロパティで変更できます。
ComboBox1.MaxDropDownItems = 20
指定した文字列と一致する項目を検索する
FindStringExactは、指定した文字列と一致する項目を検索します。該当項目がなければ、-1を、見つかれば該当Indexの値を返します。
ComboBox1.SelectedIndex = ComboBox1.FindStringExact("みかん")
項目を追加する
項目を追加する方法は、Items.Add・DataSourceなどがあります。
'Items.Addで設定
ComboBox1.Items.Add(New Fruit("0001", "リンゴ"))
ComboBox1.Items.Add(New Fruit("0002", "みかん"))
ComboBox1.Items.Add(New Fruit("0003", "いちご"))
または
'DataSourceで設定
Dim Fruits As New ArrayList()
Fruits.Add(New Fruit("0001", "リンゴ"))
Fruits.Add(New Fruit("0002", "みかん"))
Fruits.Add(New Fruit("0003", "いちご"))
ComboBox1.DataSource = Fruits
※Item.Add()で追加する出来るものはStringだけではありません。
表示を値を分ける
表示する項目と表示項目に対しての値を分けたい場合、の例を記載します。
・Items.Addで追加した場合、SelectedItemで取り出します。
・DataSourceで追加した場合、SelectedItem以外にSelectedValueで取り出せます。
通常は、TCommboBoxは、ToString()で取得出来るものをリストに表示します。
DisplayMemberでプロパティを指定する事により表示するものを変更することができます。
ValueMemberでプロパティを指定する事により、SelectedValueで取得出来るもの設定できます。
Public Class Fruit
Protected m_strCode As String
Protected m_strName As String
Public Sub New(ByVal strCode As String, ByVal strName As String)
Me.m_strCode = strCode
Me.m_strName = strName
End Sub
Public ReadOnly Property Code() As String
Get
Return m_strCode
End Get
End Property
Public ReadOnly Property FruitName() As String
Get
Return m_strName
End Get
End Property
Public Overrides Function ToString() As String
Return Me.Code + " - " + Me.FruitName
End Function
End Class
Items.Addで追加する
ComboBox1.BeginUpdate()
ComboBox1.Items.Add(New Fruit("0001", "リンゴ"))
ComboBox1.Items.Add(New Fruit("0002", "みかん"))
ComboBox1.Items.Add(New Fruit("0003", "いちご"))
ComboBox1.EndUpdate()
ComboBox1.SelectedIndex = ComboBox1.FindStringExact("みかん")
ComboBox1.DisplayMember = "FruitName"
---------------------------------------------------------------------------------
[値を取得するときの処理]
Dim no As Integer = ComboBox1.SelectedIndex
Dim strTemp As Fruit = Me.ComboBox1.SelectedItem
※BeginUpdate()とEndUpdate()は普通いりません。(再描画しないようにする機能です)
DataSourceで追加する
Dim Fruits As New ArrayList()
Fruits.Add(New Fruit("0001", "リンゴ"))
Fruits.Add(New Fruit("0002", "みかん"))
Fruits.Add(New Fruit("0003", "いちご"))
ComboBox1.DataSource = Fruits
ComboBox1.DisplayMember = "FruitName"
ComboBox1.ValueMember = "Code"
---------------------------------------------------------------------------------
[値を取得するときの処理]
Dim no As Integer = ComboBox1.SelectedIndex
Dim strTemp As Fruit = Me.ComboBox1.SelectedItem
Dim strVal As String = ComboBox1.SelectedValue.ToString()
ComboBoxにEnumで列挙した値を設定する
Enum Fruit As Integer
リンゴ = 10
みかん = 20
いちご = 30
End Enum
--------------------------------------------------------------------
[列挙体をComboBoxに設定する]
ComboBox1.DataSource = System.Enum.GetValues(GetType(Fruit))
--------------------------------------------------------------------
[選択された値を所得する]
Dim no As Integer = ComboBox1.SelectedValue