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