OpenFileDialog在下拉列表中不显示任何历史记录

时间:2013-12-17 08:53:30

标签: c# openfiledialog

我在SO搜索了很多帖子,但我发现的任何内容都只是存储历史记录以及如何将其删除的地方,例如:

How to clear a FileDialog's dropdown history?

我查看了所描述的注册表路径,但是应该存储最近打开的文件的路径在这里解释

View the list of recently opened files in Windows width C#

缺少我机器上的最后一个文件夹OpenSaveMRU。

也许已经存在问题?我怎么能解决它?

我的操作系统是带有最新可用补丁的Windows 7 x64。

编辑17.12.2013 10:40:

我发现OpenSaveMRU密钥已在Vista / Windows 7下重命名为OpenSavePidlMRU。 OpenSaveMRU and LastVisitedMRU


我正在显示对话框:

System.Win32.OpenFileDialog dialog = new System.Win32.OpenFileDialog();
dialog.AddExtension = true;
dialog.CheckPathExists = true;
dialog.DefaultExt = ".xaml";
dialog.Filter = "Xaml files (.xaml)|*xaml|All files|*.*";
dialog.FilterIndex = 0;

Boolean? result = dialog.ShowDialog();
if (result.HasValue && result.Value)
{
   // business logic
}

打开一些文件后,下拉历史记录仍然为空。 有什么想法解决这个问题吗?

解决方案

为xaml定义的过滤器出错了。 *和xaml之间缺少一个点。

2 个答案:

答案 0 :(得分:2)

发现它! 问题是这一行

Filter = "Xaml files (.xaml)|*xaml|All files|*.*",

因为* xaml 不是扩展名。 而是写

Filter = "Xaml files (.xaml)|*.xaml|All files|*.*",

答案 1 :(得分:1)

每次尝试使用相同的对话框对象:

System.Win32.OpenFileDialog dialog = new System.Win32.OpenFileDialog()
{
    AddExtension = true,
    CheckPathExists = true,
    DefaultExt = ".xaml",
    Filter = "Xaml files (.xaml)|*xaml|All files|*.*",
    FilterIndex = 0
};

private void FileOpen()
{
    Boolean? result = dialog.ShowDialog();
    if (result.HasValue && result.Value)
    {
        // business logic
    }
}