我有一个OpenFileDialog,当用户第一次使用应用程序单击“浏览”时,它应该打开一个特定的路径,比如%ProgramData%。对于所有连续的术语,它应该打开上次使用的文件夹。
我试过了:
OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = "C:\ProgramData";
ofd.RestoreDirectory = true;
ofd.FileName = "";
DialogResult dr = ofd.ShowDialog();这里的问题是,它每次都会打开"C:\ProgramData“,即使我在查找所需文件时更改了路径。是否有我应该设置的特定属性,或者我是否必须以编程方式跟踪OpenFileDialog的使用情况并相应地设置路径?
发布于 2012-07-16 20:01:53
试试这个:
单击按钮时,您正在将intialdirectory重置为C:\ProgramData
public partial class Form1 : Form
{
OpenFileDialog ofd = new OpenFileDialog();
public Form1()
{
InitializeComponent();
ofd.InitialDirectory = "C:\\ProgramData";
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult dr = ofd.ShowDialog();
ofd.InitialDirectory = null;
}
}发布于 2012-07-16 19:57:17
这样做:
// save your current directory
string currentDirectory = Environment.CurrentDirectory;
// create an OpenFileDialog and set RestoreCurrentDirectory to false.
OpenFileDialog ofd = new OpenFileDialog();
ofd.RestoreCurrentDirectory = false;
ofd.ShowDialog();
// save the selected directory locally.
string selectedDirectory = Environment.CurrentDirectory; // OpenFileDialog changed this value.
Environment.CurrentDirectory = currentDirectory; // reset the property with the first value.
// next time you open an OpenFileDialog, set the InitialDirectory property
OpenFileDialog ofd2 = new OpenFileDialog();
ofd.InitialDirectory = selectedDirectory; // set the InitialDirectory to what it was last time an OpenFileDialog was opened.
ofd.ShowDialog(); RestoreDirectory属性确保在OpenFileDialog关闭之前重置Environment.CurrentDirectory中的值。如果RestoreDirectory设置为false,则Environment.CurrentDirectory将设置为OpenFileDialog上次打开到的任何目录。
发布于 2012-07-16 19:55:44
我认为您对RestoreDirectory属性的理解是错误的。实际上,它会在对话框关闭后将目录恢复为默认目录。与你想做的事情正好相反。
另请查看:OpenFileDialog RestoreDirectory as no effect if Multiselect is set to true
https://stackoverflow.com/questions/11503600
复制相似问题