VB.NET CheckedListBox标签?

Ale*_*lex 4 vb.net checkedlistbox

CheckedListBox中的项目是否有标记?或类似的东西?我希望能够存储与我正在显示的项目相关联的ID.

Owe*_*enP 7

您不需要Tag属性.控件接受任何对象,这意味着您不必只在其中放置字符串.创建一个具有字符串(和覆盖ToString())以及您需要的任何其他数据成员的类.

Public Class Form1

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)

        CheckedListBox1.Items.Add(New MyListBoxItem() With {.Name = "One", .ExtraData = "extra 1"})
        CheckedListBox1.Items.Add(New MyListBoxItem() With {.Name = "Two", .ExtraData = "extra 2"})
    End Sub

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        For Each obj As Object In CheckedListBox1.CheckedItems
            Dim item As MyListBoxItem = CType(obj, MyListBoxItem)
            MessageBox.Show(String.Format("{0}/{1} is checked.", item.Name, item.ExtraData))
        Next
    End Sub
End Class

Public Class MyListBoxItem
    Private _name As String
    Private _extraData As String

    Public Property Name As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property ExtraData As String
        Get
            Return _extraData
        End Get
        Set(ByVal value As String)
            _extraData = value
        End Set
    End Property

    Public Overrides Function ToString() As String
        Return Name
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

(被覆盖的ToString()指示将在框中显示的内容.)