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