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

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

获取或设置一个值,该值指示对话框在关闭之前是否还原当前目录。

这到底是什么意思呢? “恢复”当前目录实际上做了什么? 谢谢您的帮助。

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

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

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

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

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

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

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

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

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

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

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

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

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