【问题标题】:Does OpenFileDialog InitialDirectory not accept relative path?OpenFileDialog InitialDirectory 不接受相对路径吗?
【发布时间】:2014-02-14 02:48:06
【问题描述】:

dialog 是一个OpenFileDialog 类对象,我使用的是ShowDialog() 方法。

当我使用包含相对路径的路径时,例如:

dialog.InitialDirectory = "..\\abcd";
dialog.InitialDirectory = Directory.GetCurrentDirectory() + "..\\abcd";

ShowDialog() 崩溃;我唯一能做的就是给出一个明确的路径,从磁盘驱动器开始:

dialog.InitialDirectory = "C:\\ABC\\DEF\\abcd";

在这种情况下,我希望路径是 .exe 当前目录的上一级,然后向下到目录abcd
.exe的当前路径可以通过Directory.GetCurrentDirectory()找到,这很好,但我不能继续".."

目录层次结构如下:

ABC
    DEF 
        abcd (where I want to go)
        defg (where .exe is at)

那么,有什么方法可以将"..\\"InitialDirectory 一起使用?
或者我必须使用明确的路径?
谢谢!

【问题讨论】:

标签: c# relative-path openfiledialog


【解决方案1】:

我找到了自己的答案!!

string CombinedPath = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "..\\abcd");
dialog.InitialDirectory = System.IO.Path.GetFullPath(CombinedPath);

【讨论】:

    【解决方案2】:

    看看以下是否能找到你正在寻找的路径:

    dialog.InitialDirectory
      = Path.Combine(Path.GetDirectoryName(Directory.GetCurrentDirectory()), "abcd");
    

    Path.GetDirectoryName 的调用会剥离路径的最后一部分,在最后一个目录分隔符之后,无论是文件名还是文件夹名。

    【讨论】:

    • 问题是添加像 ..\abcd 这样的相对路径不起作用。使用上述方法仍然不会;而是检查 Marson Mao 的答案。
    【解决方案3】:

    另一种方法是

    openFileDialog.InitialDirectory = Path.Combine(Application.StartupPath,@"..\YourSubDirectoryName");
    

    【讨论】:

      猜你喜欢
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2016-01-09
      相关资源
      最近更新 更多