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

25 c# filedialog winforms

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

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

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

dig*_*All 28

IIRC,在Windows XP中,当你按Save上一个SaveFileDialog(或OpenOpenFileDialog),该文件被保存(或打开)的目录,设定为新的当前工作目录(之一Environment.CurrentDirectory).

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

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

  • 我想很多人(比如我以前的自己)都认为,由于文档的含义模糊,这个属性将_magically_持久保存用户的"最后查看目录".MSDN文档应链接到此处. (8认同)

Mar*_*ell 6

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

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

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