2009-07-14 34 views

Trả lời

30

Bạn sẽ cần phải tham khảo System.IO cho phương pháp này.

var driveList = DriveInfo.GetDrives(); 

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

Hoặc cho các fan LINQ:

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



Added
Đối với phần tiết kiệm, như xa như tôi biết tôi không nghĩ rằng bạn có thể hạn chế nơi người dùng được phép lưu vào sử dụng một SaveFileDialog, nhưng bạn có thể hoàn thành một kiểm tra sau khi bạn đã hiển thị SaveFileDialog.

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

HOẶC

Lựa chọn tốt nhất là để tạo của riêng bạn Save Dialog, trong đó có một cái nhìn cây, chỉ hiển thị các ổ đĩa di động và nội dung của họ cho người sử dụng để lưu vào! Tôi muốn giới thiệu tùy chọn này.

Hope this helps

+0

Hi ThePower, Tôi muốn hiển thị các ổ đĩa di động khả dụng cho người dùng dưới dạng hộp thoại để lưu tệp. Hãy giúp tôi. – Anuya

+1

@karthik Tôi nghĩ bạn sẽ phải tạo Hộp thoại Lưu tùy chỉnh của riêng mình, nó sẽ chỉ hiển thị các thư mục bạn nhận được từ Danh sách Ổ đĩa.Bạn có thể thử thiết lập saveFileDialog.InitialDirectory thành một trong các ổ đĩa di động, nhưng người dùng vẫn có thể quay lại ổ đĩa cứng. Nếu bạn có thời gian để tạo hộp thoại của riêng mình thì đó là lựa chọn tốt nhất , bằng cách sử dụng một TreeView để hiển thị RemovableDrives và nội dung của chúng, nhưng điều này sẽ tốn nhiều thời gian hơn bạn mong đợi để đạt được giải pháp này. – ThePower

+0

Có lỗi trong truy vấn LINQ, nó phải là "Có thể tháo rời" thay vì "Có thể tháo rời" – Lonefish

4
+0

H Rhys, Tôi mới vào iLists. Làm cách nào để thực thi mã trong liên kết mà bạn đã cung cấp, inorder để hiển thị hộp thoại với các ổ đĩa di động cho người dùng? Vui lòng trợ giúp. Khẩn cấp. – Anuya

+0

Mã mẫu tại liên kết đó chỉ trả về danh sách các ổ đĩa di động. Để sử dụng tính năng này trong hộp thoại, có thể bạn sẽ cần tạo hộp thoại tùy chỉnh theo đề xuất của @ThePower. –

+0

Liên kết trong bài đăng này đã chết. Chúng ta nên làm gì với câu trả lời? Tất cả câu trả lời là, là một liên kết đến một nguồn tài nguyên mà ngày nay (25-10-17) không tồn tại nữa. – Jura25

9

Làm thế nào về:

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

Hoặc đồng nghĩa: var removableDrives = DriveInfo.GetDrives(). Trường hợp (d => d.DriveType == DriveType.Removable); –

3

Bạn cũng có thể sử dụng WMI để có được danh sách các ổ đĩa rời.

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

Edited dựa trên nhận xét:

Sau khi bạn nhận được danh sách các ổ đĩa đạt được điều đó GUID và thêm chúng vào bộ sưu tập SaveFileDialogInstance.CustomPlaces.

Đoạn code dưới đây cần một số tinh chỉnh ...

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

Điều gì xảy ra nếu đó là SD thay vì USB? Hoặc điều này sẽ phục vụ cho điều đó? – ThePower

Các vấn đề liên quan