我假設你是想將項目添加到組合框的Windows窗體上。雖然Klaus在正確的軌道上,我相信ListItem類是System.Web.UI.WebControls命名空間的成員。所以你不應該在Windows窗體解決方案中使用它。但是,您可以創建自己的班級,您可以使用它。 創建一個名爲MyListItem(或任何名稱你選擇),這樣簡單的類:
Public Class MyListItem
Private mText As String
Private mValue As String
Public Sub New(ByVal pText As String, ByVal pValue As String)
mText = pText
mValue = pValue
End Sub
Public ReadOnly Property Text() As String
Get
Return mText
End Get
End Property
Public ReadOnly Property Value() As String
Get
Return mValue
End Get
End Property
Public Overrides Function ToString() As String
Return mText
End Function
End Class
現在,當您想將項目添加到您的組合框,你可以做這樣的:
myComboBox.Items.Add(New MyListItem("Text to be displayed", "value of the item"))
現在當你想要從你的ComboBox中所選項目的值,你可以做這樣的:
Dim oItem As MyListItem = CType(myComboBox.SelectedItem, MyListItem)
MessageBox.Show("The Value of the Item selected is: " & oItem.Value)
的關鍵之一這裏覆蓋的ToString方法類。這是ComboBox獲取顯示的文本的位置。
Matt在下面的評論中提到了使用泛型使其更加靈活的優點。所以我想知道會是什麼樣子。
這裏是新的和改進GenericListItem
類:
Public Class GenericListItem(Of T)
Private mText As String
Private mValue As T
Public Sub New(ByVal pText As String, ByVal pValue As T)
mText = pText
mValue = pValue
End Sub
Public ReadOnly Property Text() As String
Get
Return mText
End Get
End Property
Public ReadOnly Property Value() As T
Get
Return mValue
End Get
End Property
Public Overrides Function ToString() As String
Return mText
End Function
End Class
這裏是你會怎麼現在通用的項目到您的組合框添加。在這種情況下,一個整數:
Me.myComboBox.Items.Add(New GenericListItem(Of Integer)("Text to be displayed", 1))
而現在該項目的檢索:
Dim oItem As GenericListItem(Of Integer) = CType(Me.myComboBox.SelectedItem, GenericListItem(Of Integer))
MessageBox.Show("The value of the Item selected is: " & oItem.Value.ToString())
記住類型Integer
可以是任何類型的對象或值類型的。如果你想讓它成爲你自己的自定義類中的一個對象,那很好。基本上任何事情都會採用這種方法。
在vb.net 2015 dosen't work :( – Rinos 2017-06-22 13:05:09