我在 MSDN 上阅读过有关该属性的信息,但我仍然不明白它的作用。
获取或设置一个值,该值指示对话框是否在关闭前恢复当前目录。
这到底是什么意思呢?“恢复”当前目录实际上是做什么的?谢谢您的帮助。
我在 MSDN 上阅读过有关该属性的信息,但我仍然不明白它的作用。
获取或设置一个值,该值指示对话框是否在关闭前恢复当前目录。
这到底是什么意思呢?“恢复”当前目录实际上是做什么的?谢谢您的帮助。
IIRC,在 Windows XP 中,当您按下Save
保存(SaveFileDialog
或Open
打开OpenFileDialog
)文件的目录时,将设置为新的当前工作目录(位于 中的目录Environment.CurrentDirectory
)。
通过设置FileDialog.RestoreDirectory = true
,当你关闭FileDialog
原来的工作目录时会恢复。
在 Windows Vista/Seven 中,行为始终为FileDialog.RestoreDirectory = true
(是的,即使您将其设置为 false...)。
原始实现的一个令人讨厌的怪癖是,在您做出选择后,您的应用程序的当前目录更改为该文件夹,这意味着如果您希望文件操作与您的应用程序文件夹相关,那么它现在失败了。
这意味着在使用对话框之前添加代码以捕获当前文件夹并在之后恢复它是一种常见的做法。
这是已修复的,因此它可以为您执行此操作,但更改默认行为可能会破坏依赖于怪癖的代码。因此,您需要通过此属性手动启用它。
当您在使用对话框时可以选择目录时,下次使用的对话框将在上次使用的目录中打开。使用此选项将恢复原始目录。
如果设置为 true,文件对话框将始终打开默认文件路径(InitialDirectory 属性)。
在这里,我只谈论 WinForms FileDialog,WPF FileDialog 可能有不同的行为。
对于 Win XP,当前目录在对话框的使用过程中会发生变化。
对于多线程应用程序,这一点必须知道。当切换到另一个文件夹时,通过在新线程中运行循环来检查当前目录是否在使用对话框期间发生更改很容易证明。
对于 Win 7 / mono,在使用对话框期间或之后不会更改当前目录。
因此 Win 7 / mono: 不需要 RestoreDirectory 属性。