我想为用户显示一个打开的对话框,用户只能从系统中的可移动磁盘中选择文件。我使用以下代码。但我需要获取可移动磁盘的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();
}
答案 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有一个。