J'ai un programme qui surveille les changements de certains fichiers dans une liste de dossiers, y compris les enfants (si un dossier est regardé, il va regarder tous les enfants). Je veux ajouter la possibilité d'exclure certains enfants de ce processus, mais je ne suis pas sûr de la meilleure façon de le traiter ou de stocker les "Règles" pour cela. Par exemple, here'a un arbre que je pourrais regarder:Gérer une liste de dossiers/exclusions, y compris les enfants
Root
Folder1
SubFolder1
File1
File2
Folder2
File3
File4
Je veux permettre à l'utilisateur de sélectionner un dossier (comme « Root »), et il sélectionne automatiquement tous les enfants. Si elles décochent un dossier (comme Folder1), je veux décocher tous les enfants de celui-là, mais si elles vérifient un enfant d'un enfant (comme File1), je veux vérifier tous ses enfants (ou, dans ce cas, il suffit de regarder File1, car il n'a pas d'enfants). J'imagine que je vais stocker ces données sous la forme d'une liste de nœuds où l'utilisateur a effectué une action (soit + ou -), et parcourir la liste des dossiers, un niveau à la fois, jusqu'à ce que je accéder à un noeud où l'utilisateur a effectué une action différente, puis continuer à avancer dans les dossiers/fichiers, en vérifiant à chaque étape si l'utilisateur a pris une action sur ce noeud en particulier, puis en le propageant à tous les sous-nœuds. Si un nouveau dossier/fichier apparaît sous un nœud surveillé, je veux commencer à le regarder, mais s'il apparaît sous un nœud ignoré, je l'ignorerai. Est-ce que je stocke simplement chaque dossier/fichier "activé", ainsi que l'action (regarder/ignorer) que l'utilisateur a prise, puis reconstruire l'arbre entier à chaque fois? Y a-t-il un moyen plus efficace de le faire que je ne suis pas en train de photographier?
Je suis heureux de clarifier si mon explication actuelle de la façon dont je l'imagine pas clair. En outre, j'utilise .NET, mais je suis plus intéressé par le processus général - je vais travailler sur la mise en œuvre.
C'est ce que j'ai fini par faire - l'arborescence a un ensemble de nœuds de niveau supérieur qui correspondent à des disques physiques, et le processus sérialise chacun vers XML, puis l'enregistre dans un fichier. Puis j'ai écrit un processus qui accepte le treenode qui est dans l'arborescence (une image du disque) et le todeode que vous venez de désérialiser (les paramètres de la dernière fois) et applique les cases à cocher du nœud enregistré au contrôle treeview . Merci de m'indiquer dans la bonne direction! – SqlRyan