This applies to Microsoft .NET Framework programming.
The purpose of storing objects instead of string to combo box is to allow for other information to be stored as well.
For instance, instead of just storing the text, we may also want to store the index key.
To give you a very good example.
Let's say you want to store a record where the name=Ali in combobox.
But at the same time, you also want to store the index key alongside this information so the same record can be referenced back from the database (datasource).
If you are using textbox, it is possible to do this using the tag property, however in combo box, you can't do that.
Thus, you got to do it by storing the item as object instead of string.
The tricky part is that when you do that, by default, the combo box will display the instance name of the object instead of its intended property such as the name.
Refer to 'vs-issues-sep-2011-10.jpg'
The solution is to create an 'Overrides' function for ToString.
Refer to 'vs-issues-sep-2011-11.jpg'
1.) Create a customized class.
2.) Create instances of clsA and add those instances to the combo box.
3.) Create an 'Overrides' function for ToString inside class clsA.
Download the sample codes (VB.NET Visual Studio 2008 SP1) for detail.
The purpose of storing objects instead of string to combo box is to allow for other information to be stored as well.
For instance, instead of just storing the text, we may also want to store the index key.
To give you a very good example.
Let's say you want to store a record where the name=Ali in combobox.
But at the same time, you also want to store the index key alongside this information so the same record can be referenced back from the database (datasource).
If you are using textbox, it is possible to do this using the tag property, however in combo box, you can't do that.
Thus, you got to do it by storing the item as object instead of string.
The tricky part is that when you do that, by default, the combo box will display the instance name of the object instead of its intended property such as the name.
Refer to 'vs-issues-sep-2011-10.jpg'
The solution is to create an 'Overrides' function for ToString.
Refer to 'vs-issues-sep-2011-11.jpg'
1.) Create a customized class.
Public Class clsA
Private recID As Integer
Private myName As String
Public Property VAR_recID() As Integer
Get
VAR_recID = recID
End Get
Set(ByVal value As Integer)
recID = value
End Set
End Property
Public Property VAR_myName() As String
Get
VAR_myName = myName
End Get
Set(ByVal value As String)
myName = value
End Set
End Property
End Class
2.) Create instances of clsA and add those instances to the combo box.
'--- create new object relational
objCol = Nothing
objCol = New Collection
For i = 1 To 10
objA = New clsA
objA.VAR_recID = i
objA.VAR_myName = "brandon " & i
If Not objCol Is Nothing Then
Call objCol.Add(objA, i)
End If
objA = Nothing
Next i
'--- Add to combo box ---
If Not objCol Is Nothing Then
For i = 1 To objCol.Count
objA = objCol.Item(i)
Call ComboBox1.Items.Add(objA)
objA = Nothing
Next i
End If
3.) Create an 'Overrides' function for ToString inside class clsA.
Public Overrides Function ToString() As String
Try
ToString = myName
Catch ex As Exception
ToString = DirectCast(Me, Object).ToString
MsgBox(ex.ToString & vbCrLf & ex.Message & vbCrLf & ex.StackTrace)
End Try
End Function
Download the sample codes (VB.NET Visual Studio 2008 SP1) for detail.


Comments