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