FileDialog.RestoreDirectory属性实际上做了什么?

时间:2010-12-04 12:28:55

标签: c# winforms filedialog

我已经阅读过有关MSDN上的属性,但我仍然不明白它的作用。

  

获取或设置一个指示的值   对话框是否恢复   关闭前的当前目录。

究竟是什么意思? “恢复”当前目录实际上做了什么?谢谢你的帮助。

5 个答案:

答案 0 :(得分:28)

IIRC,在Windows XP中按Save上的SaveFileDialog(或Open上的OpenFileDialog)保存(或打开)文件的目录,被设置为新的当前工作目录(Environment.CurrentDirectory中的那个)。

通过设置FileDialog.RestoreDirectory = true,当您关闭FileDialog时,将恢复原始工作目录。

在Windows Vista / Seven中,行为始终为FileDialog.RestoreDirectory = true(是的,即使您将其设置为false ...)。

答案 1 :(得分:6)

原始实现的一个令人生气的怪癖是,在您选择将应用程序的当前目录更改为该文件夹后,这意味着如果您希望文件操作相对于您的应用程序文件夹,它现在失败了。

这意味着通常的做法是在使用对话框之前添加代码来捕获当前文件夹,然后再恢复它。

这是固定的,因此它可以为您执行此操作,但更改默认行为可能会破坏依赖于怪癖的代码。所以你需要通过这个属性手动启用它。

答案 2 :(得分:0)

使用该对话框时可以选择目录,下次使用该对话框将在上次使用的目录中打开。使用此选项将恢复原始目录。

答案 3 :(得分:0)

如果设置为true,文件对话框将始终打开默认文件路径(InitialDirectory属性)。

答案 4 :(得分:0)

在这里,我只讨论WinForms FileDialog,WPF FileDialog可能有不同的行为。

对于Win XP,在使用对话框期间会更改当前目录。

对于多线程应用程序,必须注意这一点。通过在新线程中运行循环来检查当前目录是否在使用对话框时切换到另一个文件夹时很容易证明。

对于Win 7 / mono,在使用对话框期间或之后不会更改当前目录。

因此不需要Win 7 / mono:RestoreDirectory属性。