OpenFileDialog的初始目录

本文关键字:OpenFileDialog | 更新日期: 2023-09-27 18:29:55

文件对话框必须打开关闭前使用的最后一个目录位置,但我不知道如何做到这一点。我的同事只给我看了一个单词的例子,当你点击"文件"时,它会显示最后使用的文件,他告诉我使用寄存器或INI文件,我以前从未使用过。

这是我正在使用的代码:

string f_sOudeLocatie = @"D:'path'is'classified";
private void btBrowse_Click(object sender, EventArgs e)
{
    OpenFileDialog fdlg = new OpenFileDialog();
    fdlg.Title = "Zoek de CSV file";
    fdlg.InitialDirectory = f_sOudeLocatie;
    fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
    fdlg.FilterIndex = 1;
    fdlg.RestoreDirectory = true;
    if (fdlg.ShowDialog() == DialogResult.OK)
    {
        tbGekozenBestand.Text = fdlg.FileName;
        tbVeranderNaamIn.Text = Path.GetDirectoryName(fdlg.FileName);
        f_sOudeLocatie = Path.GetDirectoryName(fdlg.FileName);
        f_sSourceFileName = fdlg.FileName;
        f_sDestFileName = Path.GetFileName(Path.GetDirectoryName(fdlg.FileName)) + ".csv";
        btOpslaan.Enabled = true;
        tbVeranderNaamIn.ReadOnly = false;
    }
}

OpenFileDialog的初始目录

如果您要在按钮点击事件之外创建OpenFileDialog,它应该记得您被的最后一个文件夹

string f_sOudeLocatie = @"D:'path'is'classified";
OpenFileDialog fdlg = new OpenFileDialog();
public Form1()
{
    InitializeComponent();
    fdlg.Title = "Zoek de CSV file";
    fdlg.InitialDirectory = f_sOudeLocatie;
    fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
    fdlg.FilterIndex = 1;
    fdlg.RestoreDirectory = true;
}
private void btBrowse_Click(object sender, EventArgs e)
{
    if (fdlg.ShowDialog() == DialogResult.OK)
    {
        fdlg.InitialDirectory = fdlg.FileName.Remove(fdlg.FileName.LastIndexOf("''"));// THIS LINE IS IMPORTENT
        tbGekozenBestand.Text = fdlg.FileName;
        tbVeranderNaamIn.Text = Path.GetDirectoryName(fdlg.FileName);
        f_sOudeLocatie = Path.GetDirectoryName(fdlg.FileName);
        f_sSourceFileName = fdlg.FileName;
        f_sDestFileName = Path.GetFileName( Path.GetDirectoryName(fdlg.FileName) ) + ".csv";
        btOpslaan.Enabled = true;
        tbVeranderNaamIn.ReadOnly = false;
    }
}

您需要设置

fdlg.RestoreDirectory = false;

原因:

RestoreDirectory属性确保Environment.CurrentDirectory将在打开文件对话框之前重置关闭如果RestoreDirectory设置为false,则Environment.CurrentDirectory将设置为OpenFileDialog最后一次打开。如所述

您可以使用注册表来存储最后一个目录位置。每次打开文件对话框时,从注册表中获取值并设置为默认位置。当它关闭时,将位置存储回注册表。

这篇代码项目文章很好地解释了如何读写注册表ReadWriteDeleteFromRegistry

如果您选择使用INI文件,一些搜索将为您提供如何从INI文件读写的示例