OpenFileDialog的初始目录

时间:2013-09-03 07:02:15

标签: c# winforms openfiledialog

文件对话框必须打开关闭之前使用的最后一个目录位置,但我不知道如何执行此操作。我的同事只给我看了一个单词的例子,当你单击“文件”它显示最后使用的文件时,他告诉我使用寄存器或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;
    }
}

3 个答案:

答案 0 :(得分:10)

如果您在按钮点击事件之外创建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;
    }
}

答案 1 :(得分:3)

您需要设置

fdlg.RestoreDirectory = false;

<强>原因:

  

RestoreDirectory属性确保其中的值   Environment.CurrentDirectory将在OpenFileDialog之前重置   关闭。 如果RestoreDirectory设置为false ,则   Environment.CurrentDirectory将被设置为任何目录   OpenFileDialog最后一次开放。正如here

所解释的那样

答案 2 :(得分:1)

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

此代码项目文章向您解释了有关读取和写入注册表的信息 ReadWriteDeleteFromRegistry

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