Windows 7 公共文件夹对话框

简介:

 在Windows 7 中有些我们经常使用的库(Libraries),例如:音乐库、文档库、视频库、图片库等。还有几十个系统已知文件夹(Known Folders),System、Windows、My Music等。本篇将介绍如何通过Windows API Code Pack 在应用程序中调用这些公共文件夹。

     将Microsoft.WindowsAPICodePack.dll、Microsoft.WindowsAPICodePack.Shell.dll 加入项目中,编写如下XAML 代码,两个<ComboBox> 用来显示Known Folders 和Libraries 选项。

<Grid>
    <Label Content="Know Folders:" Height="30" Width="100" Margin="47,70,356,211" />
    <Label Content="Libraries:" Height="30" Width="100" Margin="48,191,355,90" />
    <ComboBox x:Name="knowFolders" Width="200" Height="25" Margin="186,70,117,211" />
    <ComboBox x:Name="libraries" Width="200" Height="25" Margin="186,190,117,90" />
    <Button x:Name="openKF" Click="openKF_Click" Content="Open Dialog"
            Height="30" Width="90" Margin="296,126,116,155" />
    <Button x:Name="openLB" Click="openLB_Click" Content="Open Dialog"
            Height="30" Width="90" Margin="296,250,117,31" />
</Grid>

在C# 中加入如下命名空间,Shell 用于支持加载公共文件夹,Dialogs用于调用文件夹对话框。

using Microsoft.WindowsAPICodePack.Shell;
using Microsoft.WindowsAPICodePack.Dialogs;

     接下了编写一个ComboBox 加载方法填充上面提到的两个<ComboBox> 内容,通过IKnownFolder 接口获取所有KnownFolders 类中的系统已知文件夹。

private void LoadCombox()
{
    knowFolders.Items.Clear();
    foreach (IKnownFolder kf in KnownFolders.All)
    {
        if (kf != null && kf.CanonicalName != null)
        {
            knowFolders.Items.Add(kf.CanonicalName);
        }
    }
    
    if (knowFolders.Items.Count > 0)
    {
        SortDescription kfSort = new SortDescription();
        knowFolders.Items.SortDescriptions.Add(kfSort);
        knowFolders.SelectedIndex = 0;
    }

    libraries.Items.Clear();
    libraries.Items.Add("Documents");
    libraries.Items.Add("Music");
    libraries.Items.Add("Pictures");
    libraries.Items.Add("Videos");
    libraries.SelectedIndex = 0;
}

     Known Foloder “Open Dialog” 按钮Click 事件,通过CommonOpenFileDialog 类创建对话框,将KnowFolder 初始化为ShellContainer。

private void openKF_Click(object sender, RoutedEventArgs e)
{
    CommonOpenFileDialog cfd = new CommonOpenFileDialog();
    string kfString = knowFolders.SelectedItem as string;
    IKnownFolder kf = KnownFolderHelper.FromCanonicalName(kfString);
    cfd.InitialDirectoryShellContainer = kf as ShellContainer;
    cfd.ShowDialog();
}

Libraries “Open Dialog” 按钮Click 事件:

private void openLB_Click(object sender, RoutedEventArgs e)
{
    string selection = libraries.SelectedItem as string;
    ShellContainer selectedFolder = null;
    switch (selection)
    {
        case "Documents":
            selectedFolder = KnownFolders.DocumentsLibrary as ShellContainer;
            break;
        case "Music":
            selectedFolder = KnownFolders.MusicLibrary as ShellContainer;
            break;
        case "Pictures":
            selectedFolder = KnownFolders.PicturesLibrary as ShellContainer;
            break;
        case "Videos":
            selectedFolder = KnownFolders.VideosLibrary as ShellContainer;
            break;
    }

    CommonOpenFileDialog cfd = new CommonOpenFileDialog();
    cfd.EnsureReadOnly = true;
    cfd.InitialDirectoryShellContainer = selectedFolder;
    cfd.ShowDialog();
}

编译测试:

KF

源代码

CommonFileDialog.zip





本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2011/03/28/windows7-common-file-dialog.html,如需转载请自行联系原作者

相关文章
|
2月前
|
Linux Windows
Windows系统批量创建文件夹的技巧
Windows系统批量创建文件夹的技巧
|
2月前
|
Windows
windows 文件夹视图全局生效
【8月更文挑战第31天】在 Windows 中,要使文件夹视图设置全局生效,请先在一个文件夹中设置视图模式和排序方式等,然后点击“查看”选项卡中的“选项”按钮,打开“文件夹选项”,切换到“查看”选项卡,点击“应用到文件夹”按钮以确认设置。这样,大多数文件夹将采用相同视图。不过,部分特殊文件夹可能不遵循此设置。
|
3月前
|
Windows
windows 文件夹视图全局生效
【8月更文挑战第20天】在Windows中实现文件夹视图全局设置:首先调整任一文件夹的视图样式,如选择“大图标”或“详细信息”。接着设置排序和分组选项。随后,在该文件夹的“查看”选项卡中点击“选项”,在“文件夹选项”的“查看”标签下点击“应用到文件夹”。确认后,所有文件夹将采用相同视图。注意:特定文件夹可能不受此设置影响。
|
3月前
|
开发框架 .NET API
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
149 0
|
6月前
|
存储 安全 搜索推荐
Windows之隐藏特殊文件夹(自定义快捷桌面程序)
Windows之隐藏特殊文件夹(自定义快捷桌面程序)
109 1
|
5月前
|
Windows
windows系统vbs脚本 提取文件夹中的所有文件名
windows系统vbs脚本 提取文件夹中的所有文件名
44 0
|
6月前
|
Windows
Windows下文件夹映射的实现(将文件夹从一个盘映射到另一个盘)
Windows下文件夹映射的实现(将文件夹从一个盘映射到另一个盘)
487 0
|
Shell C++ Python
VScode 右键菜单加入使用用VSCode打开文件和文件夹【Windows】
鼠标右击文件或者文件夹,可直接用VSCode打开,非常方便。但如果我们在安装VSCode的时候没有勾选这2个选项,那就享受不到这个便捷的功能了,那么怎么办呢?此时存在2种方法进行修复:重装软件在安装的过程中勾选上这2个选项即可(肯定我们不愿意,很多配置和插件都用习惯了,再装很费事,即使是 setting sync 也免不了麻烦,尤其是配置了python或C/C++的开发环境,所以这个我们不推荐)安装勾选修改注册表右键打开文件右键打开文件夹。
444 0
|
6月前
|
定位技术 Windows
Windows电脑删除文件时确认是否删除文件的提示对话框的取消显示方法
Windows电脑删除文件时确认是否删除文件的提示对话框的取消显示方法
171 1
|
Windows
windows10 创建同步文件夹
windows10 创建同步文件夹
64 0
下一篇
无影云桌面