Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Tree node check

Îåêßíçóå áðü ôï ìÝëïò axaros. Τελευταία δημοσίευση από το μέλος axaros στις 23-09-2005, 14:17. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-09-2005, 12:57 5672

    Tree node check

    Καλημέρα σε όλους :
    Αν στο checkNode event κάποιου tree control (στην περίπτωση μου UltraTree της Infragistics)
    ήθελα να "τσεκάρω" και όλα τα children του συγκεκριμένου node, πως θα αποφύγω να ξαναχτυπήσει
    το event;

    Τώρα το κάνω (bypass) κάπως άσχημα με ένα boolean :

    Protected Overrides Sub CheckTreeNodes(ByVal e As Infragistics.Win.UltraWinTree.NodeEventArgs)

    Try

       If ByPassTreeNodeChange Then
          
    Exit Sub
       
    End If

       
    Cursor.Current = Cursors.WaitCursor
       ByPassTreeNodeChange =
    True
       
    CheckTheNodes(e)
       ByPassTreeNodeChange =
    False

    Υπάρχει καλύτερος τρόπος;


    Πάνος Αβραμίδης
  •  23-09-2005, 13:10 5673 σε απάντηση της 5672

    Απ: Tree node check

    Το να μην χτυπήσει το 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 το οποίο επιλέγεται από τον ίδιο το χρήστη.


    Χρήστος Γεωργακόπουλος
  •  23-09-2005, 13:17 5674 σε απάντηση της 5673

    Απ: Tree node check

    Χρήστο ευχαριστώ. Ήταν λίγο ατυχής η διατύπωση μου ...
    το ίδιο πράγμα περιγράφουμε ... Αυτό κάνω και τώρα με ένα extra bypass variable.
    Κάτι άλλο δεν υπάρχει ;


    Πάνος Αβραμίδης
  •  23-09-2005, 13:22 5675 σε απάντηση της 5674

    Απ: Tree node check

    Δεν έχω βρει κάτι άλλο, παρ' όλο που έχω ασχοληθεί πολύ με TreeViews. Εμένα πάντως αυτό με έχει καλύψει σε όλες τις περιπτώσεις που έχω recursion στα nodes. Πάντως όπως είπα, μου φαίνεται λογικό να μην μπορούν να κλείσουν τα έμμεσα events.
    Χρήστος Γεωργακόπουλος
  •  23-09-2005, 13:52 5676 σε απάντηση της 5675

    Απ: Tree node check

    Θεωριτικά, δε θα μπορούσες να κάνεις remove το handler σου απ'το event;

    ( Δεν το έχω δοκιμάσει βέβαια σε οποιοδήποτε component της Infragistics, και για να είμαι ειλικρινής δε θυμάμαι και τη σύνταξη σε VB, οπότε ... forgive me if I'm wrong)
    Angel
    O:]
  •  23-09-2005, 14:17 5677 σε απάντηση της 5676

    Απ: Tree node check

    Άγγελε ευχαριστώ!!
    Remove και ξανά Add στο τέλος ;
    Έχεις έστω σε C# κάτι ;


    Πάνος Αβραμίδης
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems