./ alterações alvo quando uso OpenFileDialog
-
21-08-2019 - |
Pergunta
Eu estou usando um StreamWriter para registrar erros
a forma como ele foi concebido (por favor, não pergunte por quê) é abrir um novo cada vez que StreamWriter a aplicação tem que registrar uma mensagem. Ele produz tudo para ./Logs/[current-date].txt que geralmente se resolve a "c: \ MyAppFolder \ logs [current-date] .txt"
Tudo funciona corretamente, mas depois que eu usar um diálogo de arquivo aberto para dizer, "C: \ home \ myfolder \ myfile" StreamWriter tenta escrever para "c: \ home \ myfolder \ logs [current-date] .txt "
Eu sei soluções para este problema, mas eu só não entendo o que está acontecendo
Solução
O diretório atual é um valor grande processo.
O OpenFileDialog
está mudando o diretório atual.
Se você estiver usando a classe .NET OpenFileDialog
, você pode definir a propriedade RestoreDirectory
para true
para dizer ao diálogo para deixar o diretório atual sozinho (embora a forma como os documentos para RestoreDirectory
está escrito pode haver alguns problemas de segmentação, que imagino pode fazer isso ainda impróprio para um recurso de registro).
Outras dicas
Como Mike B disse, OpenFileDialog
pode mudar o diretório atual. Desde ./
é relativo ao atual, que muda também.
Os modifica propriedade RestoreDirectory
esse comportamento.
fazer algo como isto sim:
OpenFileDialog openFileDialog1 = new OpenFileDialog();
OpenFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;
MSDN .
Mike B é absolutamente correto.
Se você estiver usando a API nativa em vez de NET, você precisa definir a opção OFN_NOCHANGEDIR na estrutura OPENFILENAME. Os estados de documentação que ele não funciona para Windows XP, porém, não tenho certeza se isso se aplica à versão .NET ou não.
Não importa como você corrigir isso, estar ciente de que cada vez que a janela de ficheiros abre-se abrirá para trás em sua pasta original. Se você abrir muitos arquivos, a cura pode ser pior que a doença. Você pode ser melhor para começar o diretório atual quando o programa inicia, e antecedendo-lo aos seus nomes de arquivos.