2009-07-14 26 views

cevap

30

Bu yöntem için System.IO başvurması gerekecektir.

var driveList = DriveInfo.GetDrives(); 

foreach (DriveInfo drive in driveList) 
{ 
    if (drive .DriveType == DriveType.Removable) 
    { 
    //Add to RemovableDrive list or whatever activity you want 
    }  
} 

Veya LINQ hayranları için

:

var driveList = DriveInfo.GetDrives().Where(d => d.DriveType == DriveType.Removable); 



Eklendi Tasarruf kısmına gelince
olarak bildiğim kadarıyla ben nereye kısıtlayabilirsiniz sanmıyorum kullanıcının bir SaveFileDialog kullanarak kaydetmesine izin verilir, ancak SaveFileDialog'u gösterdikten sonra bir denetimi tamamlayabilirsiniz.

if(saveFileDialog.ShowDialog() == DialogResult.OK) 
{ 
    if (CheckFilePathIsOfRemovableDisk(saveFileDialog.FileName) == true) 
    { 
    //carry on with save 
    } 
    else 
    { 
    MessageBox.Show("Must save to Removable Disk, location was not valid"); 
    } 
} 

VEYA

iyi seçenek bir ağaç görünümü, yalnızca kullanıcı kaydetmek için çıkarılabilir sürücüleri ve içeriklerini gösteren içeren kendi kaydet Dialog oluşturmak olurdu! Bu seçeneği tavsiye ederim.

Umut bu da çıkarılabilir sürücülerin listesini almak için WMI kullanabilirsiniz

+0

Merhaba ThePower, Kullanılabilir çıkarılabilir sürücüleri kullanıcıya kaydetmek için bir iletişim kutusu olarak göstermek istiyorum. Lütfen yardım et. – Anuya

+1

@karthik Sanırım sadece Sürücü Listesinden aldığınız dizinleri gösteren kendi özelleştirilmiş Save Dialog'unuzu yaratmanız gerekecek.SaveFileDialog.InitialDirectory öğesini çıkarılabilir sürücülerden biri olarak ayarlamayı deneyebilirsiniz, ancak kullanıcı yine de sabit sürücüye geri dönebilir. Kendi iletişim pencerenizi oluşturmak için zamanınız varsa, bu en iyi seçenektir Çıkarılabilir Öğeleri ve içeriklerini göstermek için bir TreeView kullanarak, ancak bu, bu çözüme ulaşmayı beklediğinizden daha fazla zaman alır. – ThePower

+0

Linq sorgusunda bir hata var, "Removeable" yerine "Removable" olmalı – Lonefish

4
+0

H Rhys Ben iLists için yeni. Kullanıcıya çıkarılabilir sürücülerle iletişim kutusunu göstermek için, verilen bağlantıdaki kodu nasıl yürütmelisiniz? Lütfen yardım edin. Acil. – Anuya

+0

Bu bağlantıdaki örnek kod, çıkarılabilir sürücülerin bir listesini döndürür. Bunu bir iletişim kutusunda kullanmak için, muhtemelen @ThePower tarafından önerilen özel bir iletişim kutusu oluşturmanız gerekecektir. –

+0

Bu yazıdaki bağlantı öldü. Cevapla ne yapmalıyız? Bütün cevaplar, bugün (25-10-17) artık var olmayan bir kaynağın bağlantısıdır. – Jura25

9

nereden:

var removableDrives = from d in System.IO.DriveInfo.GetDrives() 
         where d.DriveType == DriveType.Removable; 
+2

Veya eş anlamlı: var removableDrives = DriveInfo.GetDrives() Burada (d => d.DriveType == DriveType.Removable); –

3

yardımcı olur. Yorum dayalı

ManagementObjectCollection drives = new ManagementObjectSearcher (
    "SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType='USB'" 
).Get(); 

Düzenlendi:

Eğer sürücülerin listesini aldıktan sonra oraya GUID en olsun ve SaveFileDialogInstance.CustomPlaces koleksiyonuna ekleyin. Aşağıdaki kod biraz oynanması gerek

...

System.Windows.Forms.SaveFileDialog dls = new System.Windows.Forms.SaveFileDialog(); 
dls.CustomPlaces.Clear(); 
dls.CustomPlaces.Add(AddGuidOfTheExternalDriveOneByOne); 
.... 
.... 
dls.ShowDialog(); 
+0

USB'den ziyade SD ise? Yoksa bunun için uygun mu? – ThePower

İlgili konular