Microsoft has the following example of how to use itemdata in .net
It works fine if you are populating row by row from 0 to whatever
I need to reset itemdata in a particular row that has been deleted,
eg
the microsoft example equates to the following
lstBox.items.add("123",654)
where 654 is the id in a database
.net allows the following without using the class
lstBox.items.add("123") which goes in row 0
lstBox.items.add("456") which goes in row 1
lstBox.items.add(1,"999") which is forced to row 1 so now we have rows 0-2
eg
"123" in row 0
"999" in row 1
"123" in row 2
How do you modify the class to achive the last example?
below is microsoft example
Public Class lstBoxes
'http://support.microsoft.com/default.aspx?scid=kb;en-us;311340
Private sName As String
Private iID As Integer 'You can also declare this as String.
'to add
'lstData.Items.Add(New lstBoxes((Trim(CStr(a))), a + 10))
' ie string & itemdata index
' to retrieve
' see PutItemData & GetItemData
' mlist = lstData.Items(lstData.SelectedIndex)
' MsgBox(mlist.Name & " * " & mlist.ItemData)
' ie string & itemdata index
Public Sub New()
sName = ""
iID = 0
End Sub
Public Sub New(ByVal Name As String, ByVal ID As Integer)
sName = Name
iID = ID
End Sub
Public Property Name() As String
Get
Return sName
End Get
Set(ByVal sValue As String)
sName = sValue
End Set
End Property
Public Property ItemData() As Integer
Get
Return iID
End Get
Set(ByVal iValue As Integer)
iID = iValue
End Set
End Property
Public Overrides Function ToString() As String
Return sName
End Function
End Class
Sub GetItemData(ByVal me_dot_lstBox As Object, ByVal me_dot_lstBox_SelectedItem As Long)
lstBox = me_dot_lstBox.Items(me_dot_lstBox_SelectedItem)
'RETURNS lstBox.Name & " * " & lstBox.ItemData
End Sub
Public Function PutItemData(ByVal me_dot_lstBox As Object, ByVal Text_String As String, ByVal Id As Long)
me_dot_lstBox.Items.Add(New lstBoxes(Trim(Text_String), Id))
End Function