打开文件对话框(OpenFileDialog)是否不支持使用相对路径作为初始路径?

5

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

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

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

ShowDialog()崩溃了;我所能做的只是提供一个明确的路径,从磁盘驱动器开始:

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

在这种情况下,我希望路径在我的.exe当前目录的上一级,并向下进入目录abcd
可以通过Directory.GetCurrentDirectory()找到.exe当前路径,这很好,但是我无法使用".."继续进行操作。
目录层次结构如下:
ABC
    DEF 
        abcd (where I want to go)
        defg (where .exe is at)

那么,有没有办法在InitialDirectory中使用"..\\"呢?或者我必须使用明确的路径?谢谢!

请查看此链接:https://dev59.com/HHM_5IYBdhLWcg3w6HvT#1175250 - Matt
3个回答

12

我找到了自己的答案!!

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

4
看看以下内容是否可以帮您找到您正在寻找的路径:
dialog.InitialDirectory
  = Path.Combine(Path.GetDirectoryName(Directory.GetCurrentDirectory()), "abcd");

调用 Path.GetDirectoryName 方法会截取路径中最后一个目录分隔符后的部分,无论它是文件名还是文件夹名。


问题在于添加类似于..\abcd的相对路径无法正常工作。即使采用了上述方法,仍然无法正常工作;建议查看Marson Mao的回答。 - Ruud van Gaal

0

另一种方法是

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接