IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

VB Exclure des dossiers cachés de l'arborescence du treeview [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Par défaut VB Exclure des dossiers cachés de l'arborescence du treeview
    Bonjour,

    Voila j'ai un treeview qui déploie toute l'arborescence du disque local C:, mais également certains dossiers cachés comme "$Recycle.bin" ou "System Volume information", "Documents and settings" (je suis en W7).

    Or l'apparition de ce treeview est très longue à cause justement de ces fichiers cachés sur lesquels même en admin je n'est pas d'accès.

    De plus lorsqu'ils apparaissent dans le treeview et que je clique dessus, cela provoque une erreur.

    Y a t il un moyen que le "directoty.info" ne prenne pas en compte ces fameux dossiers cachés.
    Je sais pas s'il y a une option spéciale dossiers caché ou si par une condition du genre "si dans le directory.info du C, si tel dossier caché existe alors l'exclure de l'arborescence.."

    Pour info voici le début du code concerné: (il n'est pas de moi, source msdn.microsoft)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     Private Sub PopulateTreeView() 
            Dim rootNode As TreeNode
     
            Dim info As New DirectoryInfo("C:\")
            If info.Exists Then
                rootNode = New TreeNode(info.Name)
                rootNode.Tag = info
                GetDirectories(info.GetDirectories(), rootNode)
                TreeView1.Nodes.Add(rootNode)
            End If
     
        End Sub
     
     
        Private Sub GetDirectories(ByVal subDirs() As DirectoryInfo, ByVal nodeToAddTo As TreeNode)
     
            Dim aNode As TreeNode
            Dim subSubDirs() As DirectoryInfo
            Dim subDir As DirectoryInfo
            For Each subDir In subDirs
                aNode = New TreeNode(subDir.Name, 0, 0)
                aNode.Tag = subDir
                aNode.ImageKey = "folder"
                Try
                    subSubDirs = subDir.GetDirectories()
                Catch e As UnauthorizedAccessException
                    subSubDirs = Nothing
                End Try
                If Not subSubDirs Is Nothing Then
                    If subSubDirs.Length <> 0 Then
                        GetDirectories(subSubDirs, aNode)
                    End If
                End If
                nodeToAddTo.Nodes.Add(aNode)
            Next subDir
     
        End Sub
     
        Public Sub New()
            InitializeComponent()
            PopulateTreeView()
     
        End Sub 'New
    Je suis débutant en la matière, merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir Bylliboy,

    Parcours ceci :

    http://msdn.microsoft.com/en-us/libr...(v=vs.90).aspx

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Par défaut
    Ca y est j'ai trouvé, j'ai modifié le getdirectories comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     Private Sub GetDirectories(ByVal subDirs() As DirectoryInfo, ByVal nodeToAddTo As TreeNode)
     
            Dim aNode As TreeNode
            Dim subSubDirs() As DirectoryInfo
            Dim subDir As DirectoryInfo
            For Each subDir In subDirs
                aNode = New TreeNode(subDir.Name, 0, 0)
                aNode.Tag = subDir
                aNode.ImageKey = "folder"
                Try
                    subSubDirs = subDir.GetDirectories()
                Catch e As UnauthorizedAccessException
                    subSubDirs = Nothing
                End Try
                If Not subSubDirs Is Nothing Then
                    If subSubDirs.Length <> 0 Then
                        GetDirectories(subSubDirs, aNode)
                    End If
                End If
                If Not subDir.Attributes = (FileAttributes.Hidden Or subDir.Attributes) Then
                    nodeToAddTo.Nodes.Add(aNode)
                End If
     
            Next subDir
     
        End Sub

    L'exécution du programme reste lente car j'imagine qu'il parcoure tout le "c:\", mais ça fonctionne très bien.

    Merci pour ton aide Wallace01

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Si tu veux accélérer le chargement des données, tu peux au début ne charger que les deux premiers niveaux de l'arborescence. Ensuite lorsque l'utilisateur déplie un nœud, tu vas chercher les deux sous-niveaux suivants, et ainsi de suite.

    Ca évite de charger toute l'arborescence d'un coup, surtout qu'il y a peu de chances que ton utilisateur ait besoin d'aller dans tous les répertoires sans exception.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme d'affichage des dossiers cachés
    Par casawi dans le forum Windows XP
    Réponses: 2
    Dernier message: 12/04/2009, 20h09
  2. Arborescence des dossiers d'un "réseau" de sites
    Par Bleys dans le forum Apache
    Réponses: 4
    Dernier message: 01/10/2008, 13h18
  3. [PHP-JS] arborescence des dossiers
    Par hacksi dans le forum Langage
    Réponses: 4
    Dernier message: 12/06/2008, 09h09
  4. Réponses: 8
    Dernier message: 19/01/2008, 10h25
  5. creer des dossiers caches
    Par warubi dans le forum C++
    Réponses: 8
    Dernier message: 06/01/2007, 19h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo