2009-07-27 3 views
0

J'ai un formulaire contenant un checklistbox, je veux être en mesure de faire une simple comparaison entre les stauts vérifiés avant et après pour voir s'il y a eu des changements. J'ai une copie de la version "avant" de la case checklist et j'ai pensé que je pouvais juste comparer les deux CheckedItems mais je pense toujours qu'ils sont différents, je pourrais parcourir toute la checklistbox mais je pensais qu'il y aurait un moyen plus facile.simple checklistbox comparaison

la comparaison est tout simplement:

Dim CurCheckedItems As CheckedListBox.CheckedItemCollection = ReportChList.CheckedItems 
Dim OldCheckedItems As CheckedListBox.CheckedItemCollection = OldReportChList.CheckedItems 

If OldCheckedItems Is CurCheckedItems Then 
Else 
... 
End If 

post-scriptum Est-il possible de faire IsNot

.net 1.1 Cadre

Répondre

0

L'est opérateur vérifie pour voir si la référence est le même, pas le contenu de la référence. Ainsi, lorsque vous faites une copie de la collection CheckedItems et que vous la comparez à une autre copie de CheckedItems avec Is, elle sera toujours fausse, car elle fait référence à différentes collections. (Vous pouvez accomplir IsNot de cette façon: "not (OldCheckedItems Is CurCheckedItems)", mais cela ne peut pas vous aider dans ce cas.)

Vous pouvez déterminer si les éléments cochés sont différents en définissant un indicateur dans l'événement ItemCheck. Vous pouvez vérifier l'élément en cours de modification avec l'élément correspondant dans oldCheckedList et conserver un indicateur indiquant si les éléments cochés sont identiques. Si oldCheckedList a été enregistré à partir d'une instance précédente de l'application, vous devrez effectuer une comparaison élément par élément pour définir l'indicateur au démarrage.