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