./ changements cible lorsque j'utilise OpenFileDialog
-
21-08-2019 - |
Question
J'utilise un StreamWriter pour enregistrer les erreurs
la façon dont il a été conçu (s'il vous plaît ne demandez pas pourquoi) est d'ouvrir un nouveau StreamWriter chaque fois que l'application doit enregistrer un message. Il produit tout à ./Logs/[current-date].txt qui se trouve généralement dans "c: \ MyAppFolder \ logs [jour actuelle] txt"
Tout fonctionne correctement, mais après que j'utilise une boîte de dialogue de fichier ouvert à dire, « C: \ home \ myfolder \ monfichier » le StreamWriter tente d'écrire « c: \ home \ MonDossier \ logs [jour actuelle] txt «
Je sais que des solutions à ce problème mais je ne comprends pas ce qui se passe
La solution
Le répertoire courant est une valeur large processus.
Le change du OpenFileDialog
répertoire courant.
Si vous utilisez la classe .NET RestoreDirectory
, vous pouvez définir la propriété à true
de dire la <=> boîte de dialogue pour quitter le répertoire courant seul (bien que la façon dont les documents sont écrits pour <=> il peut y avoir des problèmes de filetage que j'imagine pourrait en faire encore inappropriés pour une installation d'exploitation forestière).
Autres conseils
Comme Mike B dit, peut changer le répertoire OpenFileDialog
en cours. Depuis est par rapport à ./
courant, qui change aussi.
La propriété modifie ce RestoreDirectory
comportement.
Faites quelque chose comme ceci plutôt:
OpenFileDialog openFileDialog1 = new OpenFileDialog();
OpenFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;
MSDN .
Mike B est tout à fait correct.
Si vous utilisez l'API native plutôt que .NET, vous devez définir l'option OFN_NOCHANGEDIR dans la structure OPENFILENAME. La documentation indique que cela ne fonctionne pas pour Windows XP cependant, pas sûr si cela s'applique à la version .NET ou non.
Peu importe la façon dont vous résoudre ce problème, sachez que chaque fois que la boîte de dialogue de fichier ouvre ouvrira de nouveau dans votre dossier d'origine. Si vous ouvrez beaucoup de fichiers, le remède peut être pire que la maladie. Vous pouvez être mieux obtenir le répertoire courant lorsque le programme démarre et préfixer à vos noms de fichiers.