Contains method not working in items collection
I can not get the contains method to work - in the collection of objects I have in a list box. Is these a certain method I have to support in my object to make the contains method work?
Below is the code I am using to:
1) insert objects into the list (with the broken contains method)
.....[If Not lstDest.Items.Contains(objRef) Then <-- IS BROKEN]
2) the class definition for the objects I am adding
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnAdd.Click, lstSource.DoubleClick
' Sunday, Nov 14, 2004: had to modify this routine to not add actUgrp's that are
' already in the dest list....
'
Dim intRelsAdded As Integer = 0
Dim objRef As uGrpBaseRow
Try
Cursor.Current = Cursors.WaitCursor
If lstSource.SelectedItems.Count > 1 Then lstDest.BeginUpdate()
For Each objRef In lstSource.SelectedItems ' 1 or more baseUrows can be sel'ed
If Not lstDest.Items.Contains(objRef) Then
lstDest.Items.Add(objRef)
intRelsAdded += 1
End If
Next
If lstSource.SelectedItems.Count > 1 Then lstDest.EndUpdate()
While lstSource.SelectedIndices.Count > 0
'objRef =
lstSource.Items.RemoveAt(lstSource.SelectedIndices (0))
End While
updateListCounts()
RaiseEvent destListChanged_viaInternalBtn("Added (" & intRelsAdded & ") " & _
"relations to the current grouping...")
Catch ex As Exception
mObj4errhandling.writeError2log(ex)
Throw New Exception(mObj4errhandling.seeEventLogErrNotice, ex)
Finally
Cursor.Current = Cursors.Default
End Try
End Sub
2) the class definition for the objects I am adding
Here's the objects I am adding to the list's items collection (they contain just a name
and a (unique) dbID:
Private Class uGrpBaseRow
Inherits Object
' these sp names are for the user group table
Private mStrBaseRowName As String
Private mIntBaseRowID As Integer
Public Sub New(ByVal strBaseRowName As String, _
ByVal strBaseRowID As Integer)
MyBase.new()
mStrBaseRowName = strBaseRowName
mIntBaseRowID = strBaseRowID
End Sub
' need this method so the obj will display in the combo box..
Public Overrides Function toString() As String
Return mStrBaseRowName
End Function
Public ReadOnly Property name() As String
Get
Return mStrBaseRowName
End Get
End Property
Public ReadOnly Property id() As Integer
Get
Return mIntBaseRowID
End Get
End Property
End Class
#End Region
|