tom*_*ene 36 .net c# wpf winapi
我想要一个具有以下行为的SaveFileDialog:
第一次打开它时,它会转到"我的文档".
然后,它会转到最后选择的文件夹.实现这一目标的最佳方法是什么?
如果我没有设置InitialDirectory,它会进入exe的目录 - 这不是我想要的.它记住了最后选择的目录 - 即使在执行之间.
如果我设置了InitialDirectory,它就不记得最后选择的目录了.当然,我可以在注册表中保存最后选择的目录:(但我正在寻找更好的解决方案.
SaveFileDialog dialog = new SaveFileDialog();
//??? dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
dialog.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
有什么建议?
And*_*are 33
您需要设置RestoreDirectory
to true
以及InitialDirectory
属性.
Jef*_*mon 16
我不知道为什么会这样,但我终于能够让它为我工作.
我发现如果我给出完整路径,它将无法工作,但如果我将完整路径放在Path.GetFullPath()中,那么它将起作用.查看之前和之后的值表明它们是相同的,但如果没有它,它将始终不起作用,并使用它.
//does not work
OpenFileDialog dlgOpen = new OpenFileDialog();
string initPath = Path.GetTempPath() + @"\FQUL";
dlgOpen.InitialDirectory = initPath;
dlgOpen.RestoreDirectory = true;
//works
OpenFileDialog dlgOpen = new OpenFileDialog();
string initPath = Path.GetTempPath() + @"\FQUL";
dlgOpen.InitialDirectory = Path.GetFullPath(initPath);
dlgOpen.RestoreDirectory = true;
Run Code Online (Sandbox Code Playgroud)
小智 5
在设置初始目录属性之前,请确保检查目录路径是否存在。如果目录不存在,则创建该目录。IE
if (!Directory.Exists(FooDirectory))
{
Directory.CreateDirectory(FooDirectory);
}
Run Code Online (Sandbox Code Playgroud)