【问题标题】:Why the path is getting changed为什么路径正在改变
【发布时间】:2010-07-21 08:34:50
【问题描述】:

我有代码可以检索 2 种不同形式的目录路径。如果在一种形式中,我选择了打开文件并处理它的路径,当返回到另一种形式时,我会收到 Direcotry Exception 错误。我曾经使用不同的字符串来获取该路径

在第二种形式中,我称之为:

       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;

在调试期间,我从第二种形式中获得了选定的路径,但不是我预期的路径。谁能告诉我为什么?

【问题讨论】:

  • 请把例外放在问题中。

标签: c# winforms desktop-application


【解决方案1】:

你检查当前目录的值了吗?

OpenFileDialog 通常会改变当前目录。您可以使用 RestoreDirectory 属性控制该行为:

OpenFileDialog ofd = new OpenFileDialog();

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

顺便说一句,您在代码示例中连接路径。在 .NET 中,最好使用静态 Path.Combine 方法来完成。此方法将检查是否存在反斜杠(或任何系统的路径分隔符),如果缺少则自动插入:

strFilePath = Path.Combine(strFilePath, "ACH");

【讨论】:

    【解决方案2】:

    OpenFileDialogSaveFileDialog改变当前工作路径,很烦人。您可以手动重置此设置,或设置.RestoreDirectory = true; 以在选择文件后将其更改回来。如果您使用FolderBrowserDialog,如果您仍然遇到此问题,则必须手动执行。

    【讨论】:

      【解决方案3】:

      这通常取决于对FolderBrowserDialogOpenFileDialog 或类似名称的调用。这些对话框(和其他组件)会自动更改正在运行的应用程序的工作目录。

      如果有任何类型的用户交互,我的建议是避免使用相对路径。

      【讨论】:

      • 我正在使用 Openfiledialog,你能建议如何解决这个问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多