我试图在关闭OpenFileDialog后找到重置初始/默认目录的方法。请考虑以下示例:
using (OpenFileDialog openFile = new OpenFileDialog())
{
// Example: This opens in the 'Desktop' directory
// User navigates to 'Documents' directory in the Form before selecting a file
DialogResult result = openFile.ShowDialog();
if (result == DialogResult.OK) MessageBox.Show(openFile.FileName);
}
// Somewhere else, this code then runs
using (OpenFileDialog openFile = new OpenFileDialog())
{
// Problem: This now opens in 'Documents' directory. Not good!
// How to open using the same default directory (ie: Desktop)?
DialogResult result = openFile.ShowDialog();
if (result == DialogResult.OK) MessageBox.Show(openFile.FileName);
}
要清楚,'桌面'只是一个例子,我实际上并不知道初始目录,因为它存储在注册表中(如果我理解正确的话)。
我尝试使用RestoreDirectory选项。这似乎没有任何影响。从我在其他地方读到的内容来看,它应该将Environment.CurrentDirectory重置为原始值,这听起来很合理。但是,我不认为OpenFileDialog甚至使用Environment.CurrentDirectory,因为该值永远不会更改,并且永远不会与OpenFileDialog打开的内容相匹配(除非我手动浏览到它)。
这里有什么我可能会遗失的吗?有谁知道如何停止覆盖 OpenFileDialog使用的目录变量作为默认值?
答案 0 :(得分:0)
默认目录存储在Windows 7上的以下注册表项中。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32
IIRC,这在其他操作系统上可能有所不同,因此您可能希望根据您的操作系统版本找出确切的目录。
因此,您可以做的是在应用程序启动时获取该值,并将其保存在内存中,并在每次打开对话框之前将其设置为OpenFileDialog.InitialDirectory
。