Directory.GetDirectories dans un tree node ne retourne pas le bon listing

Messages postés
28
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
7 janvier 2009
- - Dernière réponse : NHenry
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
- 30 nov. 2008 à 21:59
Bonjour,
  j'ai un sérieux problème avec un treeview, j'explique
je cré un treeview avec le C: listant que le C:
Directory.SetCurrentDirectory("C:")
Node.Nodes.Add("C:")
For Each s In Directory.GetDirectories("C:") -me donne le listing du c:
et qu'ensuite je fais
Treeview.nodes.clear() -pour supprimer les items
ensuite je fais
Directory.SetCurrentDirectory("C:\HP")
Node.Nodes.Add("BIN")  -ici je met pas le full path pour pas avoir le nom en full path car si je le fais et change la propriété "text" la propriété "fullPath" du node change aussi-
j'utilise alors For Each s In Directory.GetDirectories("BIN")  -BIN étant le nom du node créé pour trouver les sous dossiers
jusque là tout fonctionne à merveille

 mais si je veux revenir à C avec
Treeview.nodes.clear() -effacer les items
Directory.SetCurrentDirectory("C:")  -ou simplement en ne spécifiant  rien  pour le directory courant ça ne change rien
Node.Nodes.Add("C:")
et
For Each s In Directory.GetDirectories("C:")
PROBLÈME ça me retourne le listing du dossier parent  soit ici celui de HP et non du C:

en d'autres mots je peux toujours aller plus profond dans l'arborescence et remonter sans problème mais pas remonter à la racine le listing donne le parent du dernier node créé.Cependant ça marche pour tout les autres dossiers précédent, loin ou non, mais pas pour le C:  bien que tout ait recréé comme la première fois

je n'arrives simplement pas à comprendre pourquoi que Directory.GetDirectories("C:") ne me retourne pas le bon listing même si le directory courant est le c:, il retourne toujours celui du node parent créé et  détruit précédemment quand j'essaie le lister le C:
impossible de relister le C:

une idée svp?
Afficher la suite 

5 réponses

Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Ta méthode de listage des dossiers est ... comment dire ... surprenante.

Inspire-toi plutôt de ces snippets :
http://www.codyx.org/snippet_copier-dossier-tout-son-contenu_127.aspx#942
http://www.codyx.org/snippet_lister-sous-repertoires-ou-sous-sous-repertoires-repertoire_260.aspx
http://www.codyx.org/snippet_liste-tous-fichiers-disque-dur_426.aspx#1562

Sinon, banni ta méthode actuelle, car :
- Tu ne peux pas prévenir un changement involontaire de dossier (une autre tâche peut changer le dossier courant)
- Ta méthode ne peut garantir que le résultat obtenu était celui désiré

Ensuite, pour avoir la racine, ne mets pas "c:", mais "c:" (au passage évite les chemins en dur).

http://nhen0039.chez-alice.fr/index.php
Commenter la réponse de NHenry
Messages postés
28
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
7 janvier 2009
0
Merci
salut,
merci pour la réponse. En effet ce n'est pas réellement une méthode extraordinaire vaut mieux passer toujours le fullpath réel

j'ai tenté de lister un dossier situé sur un ordinateur en réseau mais cette fois je n'y arrive simplement pas je crois que le chemin n'est pas traité de la même manière
merci
Commenter la réponse de binet1
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Comment tu t'y est pris ?
Par un chemin UNC, un lecteur réseau ou une autre solution ?

http://nhen0039.chez-alice.fr/index.php
Commenter la réponse de NHenry
Messages postés
28
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
7 janvier 2009
0
Merci
Oui bonjour,
  j'utilise le chemin complet. Il est facile d'ajouter le nom dans le treenode .
j'utilise For Each s In Directory.GetDirectories(path ) où path est le nom complet du chemin du dossier à copier genre "\\XP-FXRS36WAVMN0\Public" soit le chemin affiché dans l'explorateur de windows quand on navigue jusqu'au dossier en question.
Aujourd'hui j'y arrive pour le dossier  mais pas pour le volume avec
Dim nodeDirInfo As DirectoryInfo = _
        CType(New DirectoryInfo(newSelected.Tag), DirectoryInfo)  --->newSelected.tag="\\XP-FXRS36WAVMN0"
l'erreur est
The UNC path should be of the form \\server\share.

Ce que j'en comprends il me faut absolument un dossier partagé pour lister \\XP-FXRS36WAVMN0\...., mais de l'explorateur windows je peux pourtant tout voir les dossiers s'y trouvant, me semble que je devrais aussi pouvoir le lister.( J'en conclus que ma compréhension en est très limité.)

Merci
Commenter la réponse de binet1
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Ce ne sont pas des dossier, mais des partages, c'est différents.
Je ne pourrais te dire comment les lister, mais recherche sur le site.

http://nhen0039.chez-alice.fr/index.php
Commenter la réponse de NHenry