ListView ve FolderBrowserDialog Kontrolleri ile bir dizindeki dosyaları listelemek
Bu yazıda bir dizinde yeralan dosyaları ListView kontrolü içinde listelemek ve bu liste üzerinde seçilen bir dosyanın çift tıklayarak çalıştırılması örneğinden bahsedeceğim. Amaç kullanıcının dilediği bir dizini browse ederek seçebilmesi ve seçimin tamamlanmasının ardından bir ListView Windows Forms kontrolü içerisinde seçilmiş dizin içindeki dosyaların listelenmesidir. Dilerse kullanıcı ListView içinde listelenmiş dosyalardan birisini seçerek üzerinde çift tıklamak yoluyla o dosyayı açabilme şansına sahiptir.
ListView kontrolü için böyle bir fonksiyona sahip olacak şekilde geliştireceğimiz proje aslında aşağıdaki resimde görüldüğü gibi basit bir yapıya sahip. Proje aslında bir FileList ismindeki formdan oluşmakta.
FileList formu üzerinde kullanıcıların sistemdeki dizinleri browse edebilmelerini sağlayan FolderBrowserDialog kontrolümüz var. FolderBrowserDialog kontrolünü soldaki menüden seçerek sürükle bırak yöntemi ile forma ekleyebiliriz. Tüm işlemlerimizin başında yeralan dizinleri browse etmemizi sağlayacak olan ateşlemeyi "Listele" butonumuz gerçekleştirecektir.
btnListele kontrolünün Click event'inde aşağıdaki kod çalışmaktadır.
FolderBrowserDialog kontrolünün ShowDialog() metodu ile kullanıcının
dizinleri browse ederek birisini seçebilmesini sağlayan "Browse For
Folder" diyalog penceresi açılmaktadır. Kullanıcının bu diyalog
penceresinde seçerek onaylayacağı dizin FolderBrowserDialog kontrolünün
SelectedPath özelliğine atanmaktadır. Kullanıcının seçtiği dizin bir
parametre olarak Listele yordamına gönderilmektedir. Burada gerçekleştirilecek
kontrollerden birisi de kullanıcının diyalog penceresini açarak sonra bir
dizin seçmeden işlemden vazgeçmesi olacaktır. Bu durumda
FolderBrowserDialog1.SelectedPath değeri boş bir string yani "" değerine
eşit olacaktır.
Listele yordamında ListView kontrolümüz hazırlanmakta ve parametre olarak
yordama aktarılmış seçilmiş dizin içindeki dosyalar okunarak ListView
kontrolüne eklenmektedir.
Önce ListView1.Items.Clear() metodu ile ListView içinde halihazırda
bulunan dosya isimleri silinmekte ardından da
ListView1.Columns.Add("Dosya", 100, HorizontalAlignment.Left) komut
satırı ile ListView kontrolümüze "Dosya" başlığı ile bir kolon
eklemekteyiz.
Ve System.IO.Directory.GetFiles(Path) komut satırı ile elde ettiğimiz
string tipindeki diziyi bir dizi değişkene atayarak bu dizi içindeki değerleri
okuyarak ListView kontrolümüzün Items koleksiyonuna dosya isimlerini
eklemekteyiz.
System.IO.Directory.GetFiles(path) metodu ile elde ettiğimiz string dizisi içindeki
ilerlemeyi While döngüsü kurarak gerçekleştiriyoruz.
d(i).Substring(d(i).LastIndexOf("\") + 1) ile "C:\Eralper\KodYaz\article028\image001.jpg"
örneğindeki gibi elde edeceğimiz dizi içindeki dosyaların yerleri ile
ilgili değerleri "image001.jpg"
şeklindeki gibi sadece dosya isimlerine dönüştürmekteyiz.
Ardından tek yapılması gereken çift tıklama ile dosyanın açılmasını
sağlayacak olan aşağıdaki olay kodlarının yazılmasına.
Bu olayı ListView1_DoubleClick olay yordamında
System.Diagnostics.Process.Start() fonksiyonunu kullanarak gerçekleştirebiliriz.
Process.Start ile Process sınıfının ilgili dosya için tanımlı olan
default programın çalışmasını sağlanmış oluyoruz.
Bu örnek ile ilgili vb.net Windows Application projesini KodyazListViewProcess.zip isimli zip dosyası içinde bulabilirsiniz.