2009-07-15 8 views
0

사용자가 시스템의 이동식 디스크에서 파일 만 선택할 수있는 열린 대화 상자를 표시하려고합니다. 아래 코드를 사용하고 있습니다. 하지만 대화 상자를 열려면 이동식 디스크의 Guid를 가져와야합니다.C에서 이동식 디스크를 표시하는 Opendialog #

것은

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(); 
} 

답변

1

나는 그러나 폴더 아무것도하지만 선택에서 사용자를 제한하지 않습니다 CustomPlaces 수집을 설정하는 방법 이동식 드라이브에 대한 GUID를 얻을에 대한 답변이없는 ... 어떻게 말해 컬렉션에있는 파일은 열린 파일 대화 상자의 왼쪽에 바로 가기로 표시되며 AutoUpgradeEnabled 전문가가 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(); 
} 
+0

이미 Drive.Name을 입력하여 시도했지만 대화 상자가 다른 드라이브에있는 응용 프로그램의 경로를 엽니 다. – Anuya

+0

* 이동식 드라이브 *의 대화 상자를 열어서 * 애틀 거리기 시작한 다음 ** dls.InitialDirectory = item.Name; ** – TheVillageIdiot

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 
      } 
     } 
+0

설정을 시도하려는 경우. +1 – shahkalpesh

0

WMI는 Win32_DiskDrive 클래스의의 DeviceID 속성을 통해 디스크 드라이브의 GUID에 대한 액세스를 제공합니다.

WMI 쿼리는 ManagementObjectSearcher 또는 설명서에 설명 된 다른 쿼리 방법 중 하나를 사용하여 수행됩니다.

지금 VS에 액세스 할 수 없어 MSDM에 코드 샘플이 있지만 코드 샘플을 제공 할 수 없습니다.

관련 문제