Browse direktori di C#
Bagaimana saya bisa hadir kontrol untuk pengguna yang memungkinkan dia/dia untuk memilih direktori?
Ada doesn't tampaknya menjadi asli .jaring kontrol yang melakukan hal ini?
57
9
The FolderBrowserDialog kelas adalah pilihan terbaik.
Catatan: tidak ada jaminan kode ini akan bekerja di versi masa depan .Net framework. Menggunakan pribadi .Net framework internal seperti yang dilakukan di sini melalui refleksi ini mungkin tidak baik secara keseluruhan. Gunakan interop solusi yang disebutkan di bawah, seperti Windows API kecil kemungkinan untuk berubah.
Jika anda sedang mencari Folder picker yang terlihat lebih seperti Windows 7 dialog, dengan kemampuan untuk copy dan paste dari textbox di bagian bawah dan panel navigasi di sebelah kiri dengan favorit dan lokasi umum, maka anda bisa mendapatkan akses ke dalam sangat ringan cara.
Yang FolderBrowserDialog UI sangat minim:
Tapi anda dapat memiliki ini sebagai gantinya:
Berikut ini's kelas yang dibuka Vista-gaya folder picker menggunakan .Net swasta
IFileDialog
antarmuka, tanpa secara langsung menggunakan interop di kode (.Net mengurus itu untuk anda). Jatuh kembali ke pra-Vista dialog jika tidak cukup tinggi versi Windows. Harus bekerja di Windows 7, 8, 9, 10 dan yang lebih tinggi (secara teoritis).Saya mengembangkan ini sebagai dibersihkan versi .NET Win 7-gaya folder pilih dialog oleh Bill Seddon dari lyquidity.com (saya tidak memiliki afiliasi). Saya menulis saya sendiri karena solusi nya membutuhkan tambahan Refleksi kelas yang isn't diperlukan untuk ini difokuskan tujuan, menggunakan pengecualian berbasis kontrol aliran, doesn't cache hasil refleksi panggilan. Perhatikan bahwa bersarang statis
VistaDialog
kelas sehingga statis refleksi variabel don't mencoba untuk mendapatkan diisi jikaShow
metode ini tidak pernah disebut.Hal ini digunakan seperti di Windows Form:
Tentu saja anda dapat bermain-main dengan pilihan dan sifat-sifat apa itu memperlihatkan. Misalnya, memungkinkan multiselect di Vista-gaya dialog.
Juga, harap dicatat bahwa Simon Kelu memberikan jawaban yang menunjukkan bagaimana untuk melakukan pekerjaan yang sama persis menggunakan interop terhadap Windows API secara langsung, meskipun versinya harus dilengkapi untuk menggunakan gaya yang lebih tua dialog jika di versi Windows yang lebih tua. Sayangnya, saya tidak't menemukan posting-nya namun ketika saya bekerja saya solusi. Nama racun anda!
Anda hanya bisa menggunakan
FolderBrowserDialog
kelas dariSistem.Windows.Bentuk
namespace.Silakan don't mencoba dan roll anda sendiri dengan TreeView/DirectoryInfo kelas. Untuk satu hal, ada banyak fitur bagus yang anda dapatkan secara gratis (ikon/klik kanan/jaringan) dengan menggunakan SHBrowseForFolder. Untuk yang lain ada kasus tepi/menangkap anda mungkin tidak menyadari.
cara yang lebih baik untuk melakukannya dan dengan beberapa folder pilihan
penggunaan:
Untuk fungsionalitas lebih banyak dari FolderBrowserdialog, seperti penyaringan, check-box, dll, lihatlah pihak ke-3 kontrol seperti Shell MegaPack. Karena mereka kontrol, sehingga mereka dapat dimasukkan ke dalam bentuk anda sendiri bukannya tampil sebagai modal dialog.
atau bahkan lebih baik, anda dapat menempatkan kode ini di file kelas
Dan menggunakannya seperti ini
Anda bisa menggunakan TreeView dalam kombinasi dengan DirectoryInfo kelas.