[VB.NET]コンボボックスの1アイテムに2つ以上の値を持たせる

2つの値、つまりIDと名前など (001, 太郎)を、コンボボックスComboBox(プルダウンメニュー)に入れる。そして選択アイテムとして名前の方を表示したい時の方法です。IDは内部データとして隠れます。


    'クラス作成
    Public Class CBList
'変数宣言
        Private idV As String
        Private nameD As String
'ここで値を受け取る
        Public Sub New(ByVal ID As String, ByVal Name As String)

            idV = ID
            nameD = Name

        End Sub
'IDプロパティ宣言
        Public ReadOnly Property ID() As String
            Get
                Return idV
            End Get
        End Property
'Nameプロパティ宣言
        Public ReadOnly Property Name() As String
            Get
                Return nameD
            End Get
        End Property
    End Class

'フォームロード時イベントなどで下記を記述
'コンボボックスに追加
        ComboBox.Items.Add(New CBList("001", "太郎"))

        ComboBox.DisplayMember = "Name"

説明
・クラス作成について

Public Class クラス名・・・
クラス作成。

Public Sub New・・・
詳しい意味は分かりません;今分かっているのはこれが置かれているものの起動時(フォームならフォーム立ち上がりの時、クラスなら(初めて?)呼び出された時)に最初に実行されるという事です。ここで変数を受け取る事も出来るのでとても便利です。

Public ReadOnly Property プロパティ名() As 型・・・
プロパティを宣言します。
この下にプロパティの値をどう決定するかを記述します。
ReadOnlyなのは、Sub Newで貰う値を設定しているためここでは必要がないからです。

Get
Return 値
End Get・・・
このクラスのプロパティが呼び出された時に返す値を設定します。

・コンボボックスへの追加について

ComboBox.Items.Add(値)・・・
コンボボックスに項目(値)を追加します。

New クラス名(値, 値)・・・
新しくクラスを呼び出します。
()の中には文字などを入れることでクラスのSubNewの変数へ渡せます。

ComboBox.DisplayMember = "クラスのプロパティ名"・・・
クラスをAddで追加してる場合、そのプロパティ名の値をプルダウンメニューの項目として表示します。ここではIDと記述すれば001、Nameと記述すれば太郎がリストに表示されます。

コメント

クラス作成を単純に考えられるようになるまで時間がかかりましたが、覚えればとても便利に使えそうです。値が3つ以上の場合でもプロパティを増やせば対応できます。

コメント

このブログの人気の投稿

[VB.NET]テキスト等チェンジイベントを有効化・無効化する

[VB.NET]8ケタの文字列を日付に変換する