我有这个代码:
OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = GetDataPath(...);
dialog.AutoUpgradeEnabled = false;
dialog.Filter = GetFilter(...);
if (dialog.ShowDialog(this) == DialogResult.OK)
{...}
Run Code Online (Sandbox Code Playgroud)
我希望,在每次运行时,将对话框放在同一文件夹 - GetDataPath(...)文件夹中,但它仍保留在最后选择的文件夹中.
这是正确的行为吗?你知道怎么解决这个问题吗?如果Windows在注册表中保存上次使用的路径,您知道如何找到它吗?
EDIT1:
附:
dialog.AutoUpgradeEnabled = true;
Run Code Online (Sandbox Code Playgroud)
按预期工作......
EDIT2:与此问题相同在Windows 7中获取SaveFileDialog的InitialDirectory属性的任何已知问题?
好的,我有一个OpenFileDialog,我想将初始目录设置为用户的'Download'文件夹.这是一个内部应用程序,因此,我确信用户将使用Windows 7.
var ofd = new OpenFileDialog();
//This doesn't work
ofd.InitialDirectory =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "Downloads");
//This doesn't work either
ofd.InitialDirectory = @"%USERPROFILE%\Downloads";
ofd.Filter = "Zip Files|*.zip";
ofd.ShowDialog();
txtFooBar.Text = ofd.FileName;
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经尝试了上述内容,但都没有工作 没有抛出异常,它只是没有将初始目录设置为downloads文件夹.
我哪里错了?
谢谢
dialog
是一个OpenFileDialog
类对象,我正在使用ShowDialog()
方法.
当我使用包含相对路径的路径时,例如:
dialog.InitialDirectory = "..\\abcd";
dialog.InitialDirectory = Directory.GetCurrentDirectory() + "..\\abcd";
Run Code Online (Sandbox Code Playgroud)
ShowDialog()
崩溃,我只能做一个明确的路径,从磁盘驱动器开始:
dialog.InitialDirectory = "C:\\ABC\\DEF\\abcd";
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望路径是我的.exe的当前目录的1级,然后向下到目录abcd
)
.exe的当前路径可以找到Directory.GetCurrentDirectory()
,这是完全正常的,但我不能继续".."
)
目录层次结构如下:
ABC
DEF
abcd (where i want)
defg (where .exe is at)
Run Code Online (Sandbox Code Playgroud)
那么,有没有任何使用方法"..\\"
有InitialDirectory
?
或者我必须使用明确的路径?
谢谢!
我们知道WPF OpenFileDialog
不再更改应用程序的工作目录和RestoreDirectory
属性"未实现".但是,在后续打开时,其初始目录默认为最后打开的文件而不是原始工作目录,因此必须将此信息存储在某处.我想知道是否可以从用户代码中获取/设置它?