Bagaimana cara menggunakan OpenFileDialog
untuk memilih folder?
Saya akan menggunakan proyek berikut: https://github.com/scottwis/OpenFileOrFolderDialog
Namun, saya menghadapi satu masalah. Ia menggunakan GetOpenFileName
fungsi dan OPENFILENAME
struktur. Dan OPENFILENAME
memiliki anggota bernama templateID
. Ini adalah pengidentifikasi untuk templat dialog. Dan proyek tersebut berisi res1.rc
file dan init templated dialog juga. Tapi saya tidak tahu bagaimana cara melampirkan file ini ke proyek C # saya.
Apakah ada cara yang lebih baik untuk menggunakan OpenFileDialog
folder pilih?
c#
.net
dialog
openfiledialog
Yun
sumber
sumber
ValidateNames
danCheckFileExists
keduanya disetel ke false danFileName
diberi nilai tiruan untuk menunjukkan bahwa direktori dipilih. Saya katakan retas karena membingungkan bagi pengguna tentang cara memilih folder. Lihat Pilih file atau folder dari dialog yang samaValidateNames
danCheckFileExists
agarfalse
tidak berfungsi, saya perlu mengaturnya ke0
(atau belajar PowerShell lebih baik)Jawaban:
Pada dasarnya Anda membutuhkan
FolderBrowserDialog
kelas:Contoh:
Jika Anda bekerja di WPF Anda harus menambahkan referensi
System.Windows.Forms
.Anda juga harus menambahkan
using System.IO
untukDirectory
kelassumber
new CommonOpenFileDialog { IsFolderPicker = true }
.Sebagai catatan untuk pengguna masa depan yang ingin menghindari penggunaan
FolderBrowserDialog
, Microsoft pernah merilis API yang disebut WindowsAPICodePack yang memiliki dialog bermanfaat yang disebutCommonOpenFileDialog
, yang dapat diatur keIsFolderPicker
mode. API tersedia dari Microsoft sebagai paket NuGet .Ini semua yang saya butuhkan untuk menginstal dan menggunakan
CommonOpenFileDialog
. (NuGet menangani dependensi)Untuk baris sertakan:
Pemakaian:
sumber
Microsoft.WindowsAPICodePack.Shell
paket melalui NuGet sebelum Anda dapat menggunakan iniCommonOpenFileDialog
.FolderBrowserDialog
pengguna: penggunaan banyak contoh secara bersamaan dapat menimbulkan masalah. IniCommonOpenFileDialog
lebih baikWindowsAPICodePack-Shell
Ada solusi peretasan menggunakan di
OpenFileDialog
manaValidateNames
danCheckFileExists
keduanya disetel ke false danFileName
diberi nilai tiruan untuk menunjukkan bahwa direktori dipilih.Saya katakan retas karena membingungkan bagi pengguna tentang cara memilih folder. Mereka harus berada di folder yang diinginkan dan kemudian cukup tekan Buka sementara nama file mengatakan "Pemilihan Folder."
Ini didasarkan pada Pilih file atau folder dari dialog yang sama oleh Denis Stankovski.
sumber
Folder Selection.
akan ditempelkan di akhir nama file seperti:C:\Folder Selection.
Saya kira Anda selalu dapat menghapus karakter-karakter dari string. Masih terlihat lebih baik daripada FolderBrowserDialogOpen
tombol utama dialog tidak berfungsi seperti yang diharapkan! itu menyebabkan Anda melompat kembali ke folder prev! tetapi ini berfungsi ketika Anda cukup mengklik dua kali folder untuk memilihnya atau memilih beberapa file di dalam masing-masing folder (jika ada file yang dapat Anda pilih)Aneh begitu banyak jawaban / suara, tetapi tidak ada yang menambahkan kode berikut sebagai jawaban:
sumber
Kedengarannya bagi saya seperti Anda hanya setelah FolderBrowserDialog .
sumber
Berikut adalah solusi lain, yang memiliki semua sumber tersedia dalam satu file ZIP yang sederhana.
Ini menyajikan OpenFileDialog dengan flag windows tambahan yang membuatnya berfungsi seperti dialog Pemilihan Folder Windows 7+.
Per situs web, ini adalah domain publik: "Tidak ada lisensi seperti Anda bebas untuk mengambil dan melakukan dengan kode apa yang Anda inginkan."
Tautan Archive.org:
sumber
Lihatlah perpustakaan Dialog Ookii yang masing-masing memiliki implementasi dialog browser folder untuk Windows Forms dan WPF.
sumber
ini harus menjadi cara yang paling jelas dan lurus ke depan
sumber
FolderBrowserDialog
telah ditawarkan di sini beberapa kali, dan merupakan jawaban yang salah. Ini adalah antarmuka yang usang dan sangat tidak ramah pengguna. Ini menggunakan diSHBrowseForFolder
bawahnya, dan bahkan status dokumen "Untuk Windows Vista atau yang lebih baru, disarankan agar Anda menggunakanIFileDialog
denganFOS_PICKFOLDERS
opsi daripadaSHBrowseForFolder
fungsi. Ini menggunakan dialog Open Files dalam mode memilih folder dan merupakan implementasi yang disukai."