C# 为什么FileDialog有时不记得初始目录?

C# 为什么FileDialog有时不记得初始目录?,c#,registry,filedialog,C#,Registry,Filedialog,我制作了一个WPF应用程序,您可以在上面打开一些open/SaveFileDialogs。在我的电脑上,它会记得我上次使用这样一个对话框时所在的目录,并在我打开另一个这样的对话框时将其设置为初始目录。但在我同事的电脑上,它不记得了 我使用的确切类是Microsoft.Win32.OpenFileDialog。我们都安装了WinXP 这可能是什么原因造成的 更新: 显然这个问题还没有解决。我发现这也发生在我的电脑上。我发现,当我选择多个文件并单击“打开”或按“回车”时,它不会保存它所在的位置。但是

我制作了一个WPF应用程序,您可以在上面打开一些open/SaveFileDialogs。在我的电脑上,它会记得我上次使用这样一个对话框时所在的目录,并在我打开另一个这样的对话框时将其设置为初始目录。但在我同事的电脑上,它不记得了

我使用的确切类是
Microsoft.Win32.OpenFileDialog
。我们都安装了WinXP

这可能是什么原因造成的

更新: 显然这个问题还没有解决。我发现这也发生在我的电脑上。我发现,当我选择多个文件并单击“打开”或按“回车”时,它不会保存它所在的位置。但是,当我只选择一个文件,然后时钟打开或按enter键(或双击它)时,它会记住位置

代码如下:

public override void Execute(object parameter) 
{
    OpenFileDialog dialog = new OpenFileDialog();
    dialog.DefaultExt = ".txt";
    dialog.Filter = "Text files (.txt)|*.txt";
    dialog.Multiselect = true;
    dialog.Title = "Select a trace file";
    // The documentation says ShowDialog always returns either true or false, 
    // so we get the value of the returned Nullable<bool> immediately to get 
    // rid of the Nullable<bool> type.
    bool result = dialog.ShowDialog().Value;
    if (result)
    {
        foreach (string fileName in dialog.FileNames)
        {
            traceFilesViewModel.TraceFileList.Add(fileName);

            traceFilesViewModel.StatusBackground = Brushes.PeachPuff;
            traceFilesViewModel.StatusForeground = Brushes.Red;
            traceFilesViewModel.StatusText = "Trace files not loaded.";
        }
    }
}
public override void Execute(对象参数)
{
OpenFileDialog=新建OpenFileDialog();
dialog.DefaultExt=“.txt”;
dialog.Filter=“文本文件(.txt)|*.txt”;
dialog.Multiselect=true;
dialog.Title=“选择跟踪文件”;
//文档中说ShowDialog总是返回true或false,
//因此,我们立即获取返回的null值以获取
//去掉可为空的类型。
bool result=dialog.ShowDialog().Value;
如果(结果)
{
foreach(dialog.FileNames中的字符串文件名)
{
TraceFileViewModel.TraceFileList.Add(文件名);
TraceFileViewModel.StatusBackground=笔刷.PeachPuff;
TraceFileViewModel.StatusForeground=画笔.Red;
TraceFileViewModel.StatusText=“未加载跟踪文件。”;
}
}
}

可能使OpenFileDialog“忘记”上次使用的目录的因素有:

  • 文件夹已被移动/重命名
  • 用户不再具有读取文件夹的权限
  • 系统驱动器(包含用户配置文件)已满,用户配置文件无法正确存储在本地计算机上
  • 应用程序是从远程位置执行的,此位置不被视为受信任(例如:\server\deployment\myapp.exe)

我希望它有帮助。

如果错误仍然存在,您可以使用此属性保存初始目录:
openFileDialog1.InitialDirectory=“c:\”


更多信息:

谢谢您的提示。最后一位很可能是候选人。我会调查的。