Pb openFileDialog, changement de dossier courant...SVP :)

Signaler
Messages postés
5
Date d'inscription
lundi 23 mai 2005
Statut
Membre
Dernière intervention
29 mars 2006
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
bonjour a tous !

voila g un probleme de csharp sous visual.net (logique me direz-vous...)

qd je lance mon executable (qui se trouve par ex sur C:\mes documents)
et que j'affiche dans une message box le dossier courant de
l'application, tout va bien je suis bien dans ce repertoire

puis dans une fonction, je declare un "openFileDialog".

je vais chercher un fichier par ex sur D:\toto\fichier.txt.

je clique sur ok, et je reviens dans ma fenetre principale

a ce moment là, je reaffiche dans une message box le dossier courant, et là c le drame !

le dossier courant se retrouve a D:\toto\, cad le dossier ou g été chercher mon fichier

le prob est que apres qd je veux chercher un fichier grace a un chemin
relatif d'origine le repertoire de mon executable, bah ca marche plus
bien evidemment

voila savez vous comme retablir ce chemin ? comme eviter ce changement de dossier courant, ou contrer le pb ?

j'espere avoir été assez clair, je peux bien sûr donner plus de
précisions si vous en avez besoin (et oui c tres important pour moi de
savoir régler ce probleme)

merci a tous, j'attends vos réponse avec impatience ! :)

7 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Avec
Environment.CurrentDirectory = Application.StartupPath;
par exemple.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
5
De toute façons, pour accéder au path de ton programme exécutable, je
te conseille de toujours utiliser Application.StartupPath. Si tu
utilises rien (implicitement le currentDirectory), tu t'exposes à ce
genre de problème.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Oui, à ce propos l'ami Path.Combine te sera probablement utile. :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
5
J'ai du mal à comprendre à quoi ça sert, cette méthode... Tu as plus
d'infos coq ? Je trouve la doc msdn pas très claire à ce sujet...



Merci d'avance :)
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Déjà je me demande bien pourquoi j'ai donner le lien US... => Path.Combine en FR

Pour l'intérêt de la méthode par exemple
path1=>"C:\UnRep";
path2=>"monfichier.txt";
En une ligne avec Path.Combine tu récupères ton path "C:\UnRep\monfichier.txt"
Tu me diras qu'il suffit de faire, aussi en une ligne path1+"\"+path2

Maintenant l'utilisateur de ta classe\ton composant etc à la bonne idée de te passer path1 sous cette forme
path1="C:\UnRep", ce qui n'est pas faux.
Path.Combine te sort toujours "C:\UnRep\monfichier.txt"
La concatenation te sort "C:\UnRep\\monfichier.txt", ce qui est relativement génant :-)

Donc Path.Combine va entre autres t'éviter de tester toi même que path1 finit déjà par \ ou non etc
Voilà je pense que c'est l'exemple le plus flagrant de l'interet de cette méthode :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
5
Ha d'accord ! C'est pas mal en effet. Au départ, sans rien connaître de
la méthode en elle même, je pensait qu'elle permettait de déduire un
chemin relatif de deux autres chemins. Tu vois, un truc du genre
"c:\MonDossier" et "c:" te donnerai "./..".

D'ailleurs, si une telle méthode existe et si tu la connais, je veux bien que tu m'en fasses profiter ;)
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
En tout cas si elle existe dans le Framework lui même je ne l'ai jamais rencontrée ^^

Cocoricoooooooo !!!!
coq
MVP Visual C#