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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top