2012-02-10 42 views
20

thể trùng lặp:
How do you configure an OpenFileDIalog to select folders?Làm thế nào để sử dụng Open File Dialog để chọn một thư mục

Tôi đang sử dụng C# và tôi muốn tránh hoàn toàn SelectFolderDialog để chọn một thư mục. Thay vào đó, tôi muốn sử dụng một cái gì đó gần gũi hơn với một OpenFileDialog chỉ để chọn một thư mục.

Đối với một ví dụ trực quan hơn, tôi đang tìm một cái gì đó gần gũi (nếu không muốn nói chính xác) như sau: http://i44.tinypic.com/x38tx1.png

enter image description here

Bất kỳ ý tưởng?

+3

Giao diện Vista IFileDialog hiển thị tùy chọn này. Có sẵn trong gói mã API của Windows, lớp CommonOpenFileDialog, thuộc tính IsFolderPicker. –

+0

@HansPassant: Nếu bạn thêm câu trả lời đó làm câu trả lời, tôi sẽ upvote nó. – Heinzi

+0

@ HansPassant: Bạn có thể đưa ra ví dụ về điều này không? Tôi đồng ý với Heinzi. – Demasterpl

Trả lời

28

Hộp thoại chọn thư mục của Windows Vista trông khá giống với những gì bạn muốn. Thật không may, FolderBrowserDialog của .NET hiển thị hộp thoại giống Windows-XP cũ mà bạn muốn tránh.

Để truy cập vào hộp thoại Vista mang phong cách này, bạn có thể

  • sử dụng một số bên thứ ba NET thư viện (ví dụ Ookii.Dialogs),
  • sử dụng các cuộc gọi Windows API có liên quan hoặc
  • sử dụng Windows API Code Pack:

    using Microsoft.WindowsAPICodePack.Dialogs; 
    
    ... 
    
    var dialog = new CommonOpenFileDialog(); 
    dialog.IsFolderPicker = true; 
    CommonFileDialogResult result = dialog.ShowDialog(); 
    

    Lưu ý rằng hộp thoại này không có sẵn trên hệ điều hành cũ hơn Windows Vis vì vậy, hãy đảm bảo kiểm tra CommonFileDialog.IsPlatformSupported trước tiên.

+2

Cả hai Winforms trong 3.5 và WPF trong 4.0 đã được cập nhật để sử dụng hộp thoại Vista. –

+0

@ HansPassant: Không. Tôi vừa mới thử: 'FolderBrowserDialog() mới ShowDialog();' trong ứng dụng .NET 4.0 WinForms hiển thị cùng một thư mục cũ, xấu xí FolderBrowserDialog. – Heinzi

+0

Kiểm tra thuộc tính FileDialog.AutoUpgradeEnabled. –

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