プロが教える店舗&オフィスのセキュリティ対策術

VB2008で開発しています。
チェックリストボックスに表示させている値は名前で
チェックが入ったときに取得したい値はコードです。
どうセットすると実現できるのでしょうか?

A 回答 (2件)

リスト項目の表示名 = 項目のオブジェクトのToString


これを利用して、次のような構造体(あるいはクラス)を作ってリストに放り込む方法があります。

Private Structure CustomListItem
Public Caption As String
Public Code As String

Public Sub New(ByVal InitCaption As String, ByVal InitCode As String)
Me.Caption = InitCaption
Me.Code = InitCode
End Sub

Public Overrides Function ToString() As String
' Captionを項目の表示名とする
Return Me.Caption
End Function
End Structure

リスト作成とチェックされた項目のコードの取り出しはこんな感じです。

Private Sub CreateList()
CheckedListBox1.Items.Add(New CustomListItem("項目1", "1111"), False)
CheckedListBox1.Items.Add(New CustomListItem("項目2", "2222"), False)
CheckedListBox1.Items.Add(New CustomListItem("項目3", "3333"), False)
CheckedListBox1.Items.Add(New CustomListItem("項目4", "4444"), False)
End Sub

Private Sub GetCheckedItems()
For Each objEnum As Object In CheckedListBox1.CheckedItems
Console.WriteLine(CType(objEnum, CustomListItem).Code)
Next
End Sub


ListBox/CheckedListBox/ComboBox等は全てこの方法で各項目に固有データを与えることが出来ます。
    • good
    • 1
この回答へのお礼

ありがとうございます。
勉強になりました。

お礼日時:2009/09/03 20:26

こんにちは。



CheckedListBoxは#1さんの方法で出来るので別の方法です。

ChecedListBoxの代わりにListViewを使う方法です。
ListViewでもチェックボックスの表示が出来、SubItemを追加することにより複数の値を格納できます。

参考にどうぞ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!