Почему путь меняется - PullRequest
3 голосов
/ 21 июля 2010

У меня есть код, который получает путь к директории в 2 разных формах.Если в одной форме я выбираю путь, чтобы открыть файл и обработать его, при возврате в другую форму я получаю сообщение об ошибке исключения Direcotry.Я использовал разные строки для получения этого пути

Во второй форме я назвал это:

       string strFilePath2;
       strFilePath2 = Directory.GetCurrentDirectory();
       strFilePath2 = Directory.GetParent(strFilePath2).ToString();
       strFilePath2 = Directory.GetParent(strFilePath2).ToString();
       strFilePath2 = strFilePath2 + "\\ACH";

В моей первой форме я назвал:

       strFilePath = Directory.GetCurrentDirectory();
       strFilePath = Directory.GetParent(strFilePath).ToString();
       strFilePath = Directory.GetParent(strFilePath).ToString();
       strFilePath = strFilePath + "\\ACH\\" + Node;

Во время отладкиЯ получаю выбранный путь из второй формы, но не тот путь, который я ожидал.Кто-нибудь может сказать, почему?

Ответы [ 3 ]

8 голосов
/ 21 июля 2010

Вы проверяли значение текущего каталога?

Обычно OpenFileDialog меняет текущий каталог.Вы можете управлять этим поведением, используя свойство RestoreDirectory:

OpenFileDialog ofd = new OpenFileDialog();

ofd.RestoreDirectory = true ; // this will not modify the current directory

Кроме того, вы объединяете пути в своем примере кода.В .NET это лучше всего сделать, используя статический метод Path.Combine.Этот метод проверяет наличие обратной косой черты (или любого другого символа системного пути) и автоматически вставляет его, если он отсутствует:

strFilePath = Path.Combine(strFilePath, "ACH");
3 голосов
/ 21 июля 2010

OpenFileDialog и SaveFileDialog меняют текущий рабочий путь, что очень раздражает.Вы можете либо сбросить это вручную, либо установить .RestoreDirectory = true;, чтобы вернуть его обратно после выбора файла.Если вы используете FolderBrowserDialog, вам придется делать это вручную, если проблема все еще возникает.

3 голосов
/ 21 июля 2010

Часто это зависит от вызова FolderBrowserDialog, OpenFileDialog или чего-то подобного.Эти диалоговые окна (и другие компоненты) автоматически изменяют рабочий каталог запущенного приложения.

Мой совет - избегать использования относительных путей в случае какого-либо взаимодействия с пользователем.

...