【问题标题】:What does the FileDialog.RestoreDirectory Property actually do?FileDialog.RestoreDirectory 属性实际上是做什么的?
【发布时间】:2010-12-04 12:28:54
【问题描述】:

我在 MSDN 上阅读过有关该属性的信息,但我仍然不明白它的作用。

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

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

【问题讨论】:

    标签: c# winforms filedialog


    【解决方案1】:

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

    通过设置FileDialog.RestoreDirectory = true,当你关闭FileDialog时,会恢复原来的工作目录。

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

    【讨论】:

    • @linquize:不知道,但我敢打赌它就像 Windows 7。
    • 我认为很多人(比如我以前的自己)认为,由于文档含糊不清,这个属性会神奇地为他们的用户保留“最后查看的目录” . MSDN 文档应该链接在这里。
    • WPF OpenFileDialog 未实现此功能
    【解决方案2】:

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

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

    此问题已修复,因此它可以为您执行此操作,但更改 默认 行为可能会破坏依赖于怪癖的代码。所以需要通过这个属性手动开启。

    【讨论】:

    • 我不知道after you made your selection the current directory of your app changed to that folder这句话是什么意思。你介意改写一下吗?
    • 这意味着当用户打开一个文件时,整个应用程序的当前目录会更改为该目录,因此如果其他地方的代码试图打开一些它期望在应用程序文件夹中的内部文件,而没有明确指定该文件夹,它将无法找到它。
    • 感谢最后一段,最佳答案没有。
    【解决方案3】:

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

    【讨论】:

    • 你确定吗?你有那个来源吗? WinForms 官方文档肯定谈到了关闭行为。不打开行为。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      这里,我说的只是 WinForms FileDialog,WPF FileDialog 可能有不同的行为。

      对于 Win XP,当前目录在对话框使用过程中会发生变化。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-11
        • 2010-11-26
        • 2015-06-23
        • 2017-12-26
        • 2016-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多