Το να μην χτυπήσει το event δεν μπορείς και δεν πρέπει να το αποφύγεις. Όντως τσεκάρονται nodes, και πρέπει τα events να γίνονται raise κανονικά. Αυτό που θέλεις να αποφύγεις είναι να εκτελέσεις τον κώδικά σου που τρέχει όταν σηκώνεται το event περισσότερες από μία φορές.
Οπότε, θα πρέπει ο handler σου να έχει ένα flag, το οποίο θα ελέγχει, το οποίο να του λέει αν το event σηκώθηκε επειδή ο χρήστης τσέκαρε ένα node, ή αν πρόκειται για αυτόματο τσεκάρισμα των subnodes.
Πχ, μπορείς να έχεις μια μεταβλητή:
Private IsAutoChecking As Boolean = False
και στον handler σου να έχεις:
Public Sub MyHandler(sender as Object, e as System.EventArgs) handles MyTreeView.BeforeCheck
If Not IsAutoChecking Then
IsAutoChecking = True
'Do some other stuff
IsAutoChecking = False
End If
End Sub
Οπότε το "Do some stuff" θα γίνει μόνο μια φορά για το πρώτο node το οποίο επιλέγεται από τον ίδιο το χρήστη.
Χρήστος Γεωργακόπουλος