kox007
Messages postés10Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention29 juin 2007
-
28 avril 2005 à 17:37
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
12 oct. 2008 à 11:03
Bonjour,
Voici mon problème. Je développe actuellement une application en c#.
L'interface de celle ci utilise des fichiers de langues sous la forme
de fichiers .ini. Tout fonctionne correctement pour la lecture des
messages dans les .ini sauf, ... lorsque j'utilise une openFileDialog
dans mon interface graphique. Si j'ouvre l'openFileDialog puis que je
clique sur OK, l'application n'arrive plus à lire les fichiers de
langues après. Par contre si je clique sur Annuler, tout fonctionne
bien.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 28 avril 2005 à 18:05
Salut,
Au démarrage de l'appli le repertoire courant est celui où se trouve l'exe.
Quand tu utilises OpenFileDialog le répertoire courant change pour celui du fichier sélectionné dans la boite de dialogue.
Du coup si tu ouvres tes fichiers ini en indiquant le path comme ceci "monfichier.ini", il ne trouve plus les fichiers en question.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 12 oct. 2008 à 11:03
Ha oui ça c'est de la résurrection de topic :p
OpenFileDialog possède une propriété RestoreDirectory (héritée de FileDialog) permettant d'obtenir le comportement voulu, mais ça ne reste bien sûr valable que pour les boites de dialogue reposant sur les contrôles communs Windows.
Tout autre changement de répertoire courant (qu'il soit dans le code courant ou un code tiers utilisé et qu'on ne maitrise donc pas) aura les mêmes impacts.
Mais je n'apprécie en général pas trop ce genre de rustinage : le problème c'est qu'il est assez fragile, il suffit qu'un autre dialogue soit ajouté à l'application sans faire de restauration derrière et on repart pour une boucle de problème (plus ou moins flagrants).
C'est pour ça que je préfère toujours travailler en chemin complet que relatif.
Voir aussi la propriété Environment.CurrentDirectory ou tout simplement la méthode Directory.SetCurrentDirectory.