5

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

3 回答 3

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;
    }
}
于 2013-09-03T07:10:07.857 回答
3

你需要设置

fdlg.RestoreDirectory = false;

原因:

RestoreDirectory 属性确保 Environment.CurrentDirectory 中的值将在 OpenFileDialog 关闭之前重置。 如果 RestoreDirectory 设置为 false,则 Environment.CurrentDirectory 将设置为 OpenFileDialog 上次打开到的任何目录。正如这里所解释的

于 2013-09-03T07:10:51.443 回答
1

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

这篇代码项目文章很好地向您解释了有关读取和写入注册表的 ReadWriteDeleteFromRegistry

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

于 2013-09-03T07:10:38.770 回答