Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
16/03/11 15:09
noitide
Buon pomeriggio a tutti, ho un problema di questo tipo, non riesco a risolvere un problema alquanto elementare con una listview cioè verificare l'esistenza o meno dell'oggetto nella listview. Infatti quando arriva al Listview1.Items.Contains(lv) mi restituisce sempre il valore false anche se in realtà l'oggetto è già stato aggiunto all'insieme (anche perchè graficamente mi appare nella lista e quindi mi trovo ad avere 10 o 20 oggetti uguali nella lista).
cosa sbaglio? grazie mille :)


For Each r As DataRow In tabellaproc1.Rows
                For Each p As Process In Process.GetProcesses
                    If p.ProcessName = r.Item("processname") Then
                        Dim lv As New ListViewItem
                        lv.Text = p.ProcessName
                        lv.Group = ListView1.Groups.Item(CInt(r.Item("processtype")))
                        If ListView1.Items.Contains(lv) = False Then
                               ListView1.Items.Add(lv)
                               MsgBox("Nuovo elemento")
                        End If
                    End If
                Next
            Next

Ultima modifica effettuata da noitide 16/03/11 15:11
aaa
17/03/11 12:53
Il Totem
Sbagli perché non sai la differenza tra tipi valore e tipi riferimento.
totemslair.org/guide/…
ListViewItem è un tipo reference, e per testarne l'uguaglianza ListViewItemCollection utilizza i metodi ereditati da una collezione base generica. Questo significa che due elementi vengono testati con la funzione Equals, che, se non opportunamente riscritta con polimorfismo, restituisce true se e solo se i due oggetti comparati hanno lo stesso riferimento, ossia sono identici.
In questo caso, è evidente che l'oggetto contenuto nella lista e lv non sono identici, poiché uno viene creato ex novo nel ciclo, quindi non può condividere lo stesso riferimento con quello nella lista.
aaa
17/03/11 17:16
noitide
grazie mille totem dell'esauriente risposta..:k: ho risolto :D
aaa