【问题标题】:Make FileDialogs start from given directory but then from last used使 FileDialogs 从给定目录开始,然后从上次使用的目录开始
【发布时间】:2017-03-27 12:51:48
【问题描述】:

我有一个在类范围内声明了OpenFileDialogSaveFileDialog 的表单:

    private OpenFileDialog OpenDialog = new OpenFileDialog()
    {
        Title = "Open",
        AddExtension = true,
        DefaultExt = "json",
        Filter = "JSON Files (*.json)|*.json",
        CheckFileExists = true,
        CheckPathExists = true,
        DereferenceLinks = true,
        Multiselect = false,
        ShowReadOnly = false,
        ValidateNames = true,
        RestoreDirectory = false
    };

    SaveFileDialog SaveDialog = new SaveFileDialog()
    {
        Title = "Save",
        AddExtension = true,
        CheckPathExists = true,
        CreatePrompt = false,
        DefaultExt = "json",
        Filter = "JSON Files (*.json)|*.json",
        RestoreDirectory = false
    };

然后在事件处理程序中使用它们,如下所示:

    private void openToolStripButton_Click(object sender, EventArgs e)
    {
        if (OpenDialog.ShowDialog(this) != DialogResult.Cancel)
        {
            //...

我想设置这些,以便用户第一次打开应用程序时打开对话框的目录是预先确定的。然而,此后,如果用户再次打开对话框,它们应该打开到用户上次使用它们的目录。

我一直在讨论主窗体的 Load 事件中的 RestoreDirectoryInitialDirectory 属性,但未能实现这一点。这可以使用对话框的标准属性或方法吗?

【问题讨论】:

  • 据我所知,如果您不指定 InitialDirectory,Windows 会自动执行此操作。
  • @yanyankelevich 如果我没有设置InitialDirectory,那么它就不能满足“打开对话框的目录是预定目录”
  • FileDialog.RestoreDirectory=true;该对话框在关闭之前将目录恢复到先前选择的目录。 InitialDirectory - 用于第一个加载目录。
  • @MuradGaribzada 是的,试过了 - 不起作用。塔
  • 您可以使用Settings.settings。看看Save Settings in VB.Net or C#

标签: c# winforms openfiledialog savefiledialog


【解决方案1】:

您很可能需要保留此信息,例如在 Windows 注册表中。这将是用户设置的一个示例,即为每个登录机器的用户单独存储的设置。第一次打开对话框时,该设置将不存在,因此默认为您的初始目录;然后,您存储选择的值并将其用于后续对话框。

【讨论】:

  • 它是否是用户设置,即使它不会通过应用程序重新启动而持续存在? - 有点认为这可能是答案
  • 所以你不希望它在应用程序重启时持续存在?您可以在加载应用程序时清除用户设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多