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

binet1 Messages postés 28 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 7 janvier 2009 - 28 nov. 2008 à 23:02
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 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?

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
29 nov. 2008 à 14:22
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
0
binet1 Messages postés 28 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 7 janvier 2009
29 nov. 2008 à 22:10
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
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
29 nov. 2008 à 23:20
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
0
binet1 Messages postés 28 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 7 janvier 2009
30 nov. 2008 à 20:15
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
30 nov. 2008 à 21:59
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
0
Rejoignez-nous