用于在c#中显示可移动磁盘的Opendialog

时间:2009-07-15 02:16:37

标签: c#

我想为用户显示一个打开的对话框,用户只能从系统中的可移动磁盘中选择文件。我使用以下代码。但我需要获取可移动磁盘的Guid来打开对话框。

告诉我怎么......

System.Windows.Forms.OpenFileDialog dls = new System.Windows.Forms.OpenFileDialog();
dls.CustomPlaces.Clear();
foreach (DriveInfo Drive in ListDrives)
{
    if (Drive.DriveType == DriveType.Removable)
    {
        dls.CustomPlaces.Add(-----Guid of Drive------);
    }
    dls.ShowDialog();
}

3 个答案:

答案 0 :(得分:3)

Karthik,更好的方法是获取所选文件的路径并检查它是否来自可移动驱动器。

        OpenFileDialog ofd = new OpenFileDialog();
        ofd.CustomPlaces.Clear();
        foreach (var item in System.IO.DriveInfo.GetDrives())
        {
            if (item.DriveType == DriveType.Removable)
                ofd.CustomPlaces.Add(item.RootDirectory.ToString());
        }

        if (ofd.ShowDialog() == DialogResult.OK)
        {
            FileInfo f = new FileInfo(ofd.FileName);
            string s = f.Directory.Root.ToString();
            DriveInfo df = new DriveInfo(s);
            if (df.DriveType == DriveType.Removable)
            {
                //DO STUFF WITH FILE
            }
        }

答案 1 :(得分:1)

我没有得到如何获取可移动驱动器的Guids的答案,但设置CustomPlaces集合不会限制用户选择除集合中的文件夹之外的任何内容,它们只会显示为打开文件对话框左侧的快捷方式,然后仅当您将AutoUpgradeEnabled proptery设置为true且用户运行的是Windows Vista或更高版本时才会显示。

请参阅:http://msdn.microsoft.com/en-us/library/bb397814.aspx

虽然要完成开始的位置,请使用DriveInfo.Name在自定义位置创建新条目:

System.Windows.Forms.OpenFileDialog dls = new System.Windows.Forms.OpenFileDialog();
dls.CustomPlaces.Clear();
foreach (DriveInfo Drive in ListDrives)
{
    if (Drive.DriveType == DriveType.Removable)
    {
        dls.CustomPlaces.Add(Drive.Name);
    }
    dls.ShowDialog();
}

答案 2 :(得分:0)

WMI通过Win32_DiskDrive类的DeviceID属性提供对磁盘驱动器GUID的访问。

使用ManagementObjectSearcher或文档中描述的其他查询方法之一执行WMI查询。

由于我现在无法访问VS,我无法提供代码示例,但我确信MSDM有一个。