[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プロパティ宣言
'IDプロパティ宣言
Public ReadOnly Property ID() As String
Get
Return idV
End Get
End Property
'Nameプロパティ宣言
'Nameプロパティ宣言
Public ReadOnly Property Name() As String
Get
Return nameD
End Get
End Property
End Class
'フォームロード時イベントなどで下記を記述
'コンボボックスに追加
説明
・クラス作成について
Public Class クラス名・・・
クラス作成。
Public ReadOnly Property プロパティ名() As 型・・・
プロパティを宣言します。
この下にプロパティの値をどう決定するかを記述します。
ReadOnlyなのは、Sub Newで貰う値を設定しているためここでは必要がないからです。
()の中には文字などを入れることでクラスのSubNewの変数へ渡せます。
ComboBox.DisplayMember = "クラスのプロパティ名"・・・
クラスをAddで追加してる場合、そのプロパティ名の値をプルダウンメニューの項目として表示します。ここではIDと記述すれば001、Nameと記述すれば太郎がリストに表示されます。
コメント
クラス作成を単純に考えられるようになるまで時間がかかりましたが、覚えればとても便利に使えそうです。値が3つ以上の場合でもプロパティを増やせば対応できます。
'フォームロード時イベントなどで下記を記述
'コンボボックスに追加
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 クラス名(値, 値)・・・
新しくクラスを呼び出します。Return 値
End Get・・・
このクラスのプロパティが呼び出された時に返す値を設定します。
・コンボボックスへの追加について
ComboBox.Items.Add(値)・・・
コンボボックスに項目(値)を追加します。
New クラス名(値, 値)・・・
()の中には文字などを入れることでクラスのSubNewの変数へ渡せます。
ComboBox.DisplayMember = "クラスのプロパティ名"・・・
クラスをAddで追加してる場合、そのプロパティ名の値をプルダウンメニューの項目として表示します。ここではIDと記述すれば001、Nameと記述すれば太郎がリストに表示されます。
コメント
クラス作成を単純に考えられるようになるまで時間がかかりましたが、覚えればとても便利に使えそうです。値が3つ以上の場合でもプロパティを増やせば対応できます。
コメント
コメントを投稿