Ana içeriğe atla

C# OpenFileDialog Kullanımı Ve Özellikleri

C# programlama dilinde OpenFileDialog dosya  yüklemek için kullanılır. Bu makalenin amaçlarından bir tanesi de OpenFileDialog sınıfının detaylarını, parametreleri ile birlikte kullanımını örnekler üzerinden açıklamaktır.

OpenFileDialog sınıfı genel çalışma yapısı olarak kullandığını diğer programlarda olduğu gibi size dosya seçme penceresine yönlendirir. Visual Studio araçlar menüsünden projeye eklenebildiği gibi sınıf içinde de tanımlanabilir. Visual Studio ortamında da araçlar kutusunda OpenFileDialog'u görebilirsiniz. Eğer bulunmuyorsa da seçtiğiniz tab'ın üzerinde Choose Item yaparak araçlar kutusuna ekleyebilirsiniz.
Ama benim önerim kod içinde bu sınıfı çağırmaktır. Çünkü her zaman form uygulaması dışında normal sınıflarda da kullanmanız gerekebilir. Bu gibi durumlara da hazırlıklı olabilmeniz açısından class içinde çağırmak ve buna alışmak daha iyi olabilir.
Konuyu fazla uzatmadan OpenFileDialog örneğine geçmek istiyorum. Genel kullanımla ilgili örnekten sonra bu kodların açıklamasını ve makalenin devamında ise parametrelerini tek tek açıklayacağım. Yukarıda resimde programımızın arayüzü bulunuyor. Kolaylık olsun diye forma bir buton, textbox ve label ekledim. Bunları eklememin amacı da butona tıklanınca dosya yükleme ekranının açılmasını sağlamak ve dosya yükledikten sonra dosya isminin textboxta, dosya yolunun da labelda görüntülenmesi sağlamaktır. Öncelikle genel görünüm olarak aşağıdaki kodları inceleyelim.
 
private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog dialog = new OpenFileDialog();
    dialog.ShowDialog();
}

Yukarıdaki iki kod satırı basitçe OpenFileDialog sınıfı tanımlamaya bu dosya seçimi ekranının açılması için yazılmıştır. Bu noktadan sonraki en önemli noktalarsa seçilecek dosya formatlarının kısıtlanması, seçilecek dosyanın işlenmesi ve bu dosyanın dosya yolunu ve dosya ismin alınması gibi işlemler bu makalenin devamında anlatılacaktır. 
Bu işlemlerle birlikte makalenin sonunda OpenFileDialog kullanımı ile ilgili tüm parametrelerin olduğu kodlar oluşacak. Makalenin devamında da özellikleri ekledikçe kodları genişleteceğim.
Kontrol edilmesi gereken önemli noktalardan bir tanesi programı kullanacak kişilerin örneğin dosya yükle işleminden sonra hiç bir şey seçmeden çıkma durumudur. Bu dorumu kontrol etmek için ShowDialog metodunun döndürdüğü değeri kullanacağız. Visual Studio üzerinde ShowDialog Metodu üzerine gelirseniz dönüş değerinin DialogResult olduğunu görebilirsiniz. Bu enumu üzerine tıklayıp Go to Definition deyip yada F12 butonuna tıklarsanız aşağıdaki açıklamalrın yer aldığı enum sınıfını göreceksiniz.

[ComVisible(true)]
    public enum DialogResult
    {
        //
        // Summary:
        //     Nothing is returned from the dialog box. This means that the modal dialog continues
        //     running.
        None = 0,
        //
        // Summary:
        //     The dialog box return value is OK (usually sent from a button labeled OK).
        OK = 1,
        //
        // Summary:
        //     The dialog box return value is Cancel (usually sent from a button labeled Cancel).
        Cancel = 2,
        //
        // Summary:
        //     The dialog box return value is Abort (usually sent from a button labeled Abort).
        Abort = 3,
        //
        // Summary:
        //     The dialog box return value is Retry (usually sent from a button labeled Retry).
        Retry = 4,
        //
        // Summary:
        //     The dialog box return value is Ignore (usually sent from a button labeled Ignore).
        Ignore = 5,
        //
        // Summary:
        //     The dialog box return value is Yes (usually sent from a button labeled Yes).
        Yes = 6,
        //
        // Summary:
        //     The dialog box return value is No (usually sent from a button labeled No).
        No = 7
    }

Bu seçeneklerle ilgili detayları çok tartışmayacağım. Ama bu konunun bilinmesi yapacağınız işlemler önemli olduğu için paylaşmak istedim. Biz durum kontrol için Ok seçeneğini kullanacağız. Bu durum da dosyanın başarılı bir şekilde seçilmesi durumunda oluşan durumdur. Bu işlem için de kodumuzu aşağıdaki şekilde değiştireceğiz.

         private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            if (dialog.ShowDialog() == DialogResult.OK)
            {

            }
            else
            {
                MessageBox.Show("Dosya Seçilmedi");
            }
        }

Sonucun başarılı olması durumundaki seçenekleri projenin devamında inceleyeceğiz. Başarılı olmadığı durumlar için burada MessageBox.Show() metodu ile ekrana dosya seçilmedi mesajını gösteriyoruz. Ama her zaman mesaj göstermeniz gerekmez bu yüzden kendi program senaryonuza göre dosya seçilip seçilmemesi durumunu buradan kontrol ederek devam edebiliriz.
OpenFileDialog metodunun sağladığı en güzel özelliklerden bir tanesi dosya seçimi için başlangıç noktası ayarlayabilmektir. Bu konuyu da biraz açacak olursak örneğin dosya seçimine masaüstünden başlamak istiyorsanız InitialDirectory özelliğine istediğimiz dosya yolunu veya benim yapacağım yöntemdeki ki masaüstünü gösterebilirsiniz. Kodumuza bu kısmı da eklediğimizde kodumuzun son durumu aşağıdaki gibi olacaktır.

         private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            if (dialog.ShowDialog() == DialogResult.OK)
            {

            }
            else
            {
                MessageBox.Show("Dosya Seçilmedi");
            }
        }

Burada Environment.GetFolderPath(Environment.SpecialFolder.Desktop) yazılımı bize bilgisayardaki Masaüstü klasör ismini gönderen bir yöntemdir.
Dosya seçiminde önemli olan noktalardan bir tanesi seçilecek klasörler için filtreleme yapmaktır. Bu işlem OpenFileDialog kullanımında en çok kullanılan yöntemdir. Bu işlem için de seçilmesini istediğiniz dosya formatlarını virgülle ayırarak eklediğimiz yerdir. Örnek eklenme şeklini de aşağıdaki kodlarda görebilirsiniz. Ben örnek olması açısından XML   formatnı seçilebilir yapacağım. Siz de istediğiniz format uzantısını buraya ekleyebilirsiniz. Bu eklentiden sonra kodların son durumu aşağıdaki gibi olacaktır.

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            dialog.Filter = "XML Dosyası | *.xml";
            if (dialog.ShowDialog() == DialogResult.OK)
            {

            }
            else
            {
                MessageBox.Show("Dosya Seçilmedi");
            }
        }

Temel olarak OpenFileDialog kullanımındaki en önemli noktalar bunlar. Şimdi de arayüzümüze label ve textboxa yüklediğimiz dosya ile ilgili bilgileri yükleyelim. Bu noktada önemle vurgulamam gerekn noktalardan bir tanesi OpenFileDialog ile dosyayı yüklemezsiniz, sadece dosya ile ilgili bilgileri almış olursunuz. Bu bilgiler eşliğinde, örneğin dosya yoluna bakarak bu işlemden sonra dosyayı yüklersiniz. 
Kodlarımızda textboxa dosya ismin, labele ise dosya yolunu yazacak şekilde yaptığımı değişiklikler aşağıdaki gibi olacaktır.

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            dialog.Filter = "XML Dosyası | *.xml";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = dialog.SafeFileName;
                label1.Text = dialog.FileName;
            }
            else
            {
                MessageBox.Show("Dosya Seçilmedi");
            }
        }
    }
Program çıktısını burada paylaşmıyorum. Zaten yukarıda anlattıklarımı ve kodları birebir yaptıysanız eminim siz de sonuç alacaksınız...
Bu noktada da dikkat edilmesi gereken nokta FileName özelliğin dosya yolunu, SafeFileName özelliğinin ise dosya ismini uzantısı ile birlikte gösterdiğidir. Tabi ki kendiniz dosya yolunu split ederek de bulabilirsiniz ama sağlıklı ve hızlı yöntem bu metodu kullanmaktır.
En son yapacağım işlemlerden bir tanesi de OpenFileDialog ile seçilmiş bir dosyayı program içinde kullanmak olacaktır. Bu işlemler çok çeşitlidir. Bunun nedeni de yüklenebilecek dosya çeşitlerinin çok fazla olması ile alakalıdır. O yüzden bu konuyu sizin seçtiğiniz dosya formatlarına gölre aşağıdaki makalelerde anlatılmıştır. Eğer sizin de kullanacağınız dosya uzantı türü bu makalelerin içinde varsa buradaki makaleye bakarak konunun devamını okuyabilirsiniz.
Son olarak konuyu özetleyecek olursak bu makalemizde OpenFileDialog konusunu detaylı inceledik. OpenFileDialog ile dosya seçiminin nasıl olduğu ve seçim işleminde dosya türlerinin nasıl filtreleneceği, aynı zamanda seçimin başarılı olup olmaması durumunda neler yapılacağı ile ilgili bilgi verildi. Seçimden sonraki dosyayı işleme konusu çok farklı dosya türlerinin olabilmesi ihtimali ile başka makalelere parçalanmış ve linkleri verilmiştir.

Makaleme ilgi gösterdiğiniz için teşekkür ederim. Umarım yazım faydalı olmuştur. Konuyla alakalı sorularınız olursa sormaktan çekinmeyin. Fırsat buldukça yanıtlamaya çalışacağım...

Yorumlar

Bu blogdaki popüler yayınlar

Azərbaycan Dilində Vurğu Qəbul Etmeyen Şekilçiler

Sözlərdə hecalardan birinin digərlərinə nisbətən daha qüvvətli deyilməsinə heca vurğusu deyilir. Üzərinə vurğu düşən hecaya isə vurğulu heca deyilir. Azərbaycan dilində vurğu adətən söz sonuna düşür. Söz şəkilçi qəbul ederkən vurğu adətən şəkilçinin üzərinə keçir. Məsələn: çiç ə k - çiçəkl ə r - çiçəklərd ə n məkt ə b - məktəbl i - məktəblil ə r - məktəblilərd ə n Buna baxmayaraq dilimizdə bir sıra şəkilçilər var ki onlar vurğu qebul etmirlər. Bu məqalədə Azərbaycan dilində vurğu qebul etməyən şəkilçilər incələnəcək ve bu şekilçilərin hansı hallarda vurğu qebul edib hansı hallarda vurğu qebul etmediyi araşdırılacaqdır. Eyni zamanda bildirmək istəyirəm ki vurğu ilə bağlı daha geniş və ətraflı məlumat üçün Azərbaycan Dilində Vurğunun Praktik Məsələləri adlı məqaləyə də nəzər yetirə bilərsiniz.  1. İsimlərdəki şəxs(xəbərlik) şəkilçiləri Məsələn: müəli'məm müəli'msən müəli'mdir müəli'mik müəli'msiniz müəli'mdirlər Qeyd: -dır4

Ağaçlar Kireçle veya Badana İle Neden Boyanır?

Ağaçlar kireçle boyanmasının veya badana yapılmasının hem çevreye hem de doğaya, ağaçlara faydası var. Bu makalede bu geleneği enine boyuna tartışmaya çalıştık. Ağaca zarar veren mikrop ve bakterileri öldürür. Ağacı çok aşarı soğuk havalarda ve çok aşırı sıcak havalarda korur. Ağacın çürümesini ve kurtlanmasını önler. Ağacın gövdesinin alabileceği zararları en az düzeyde düşürmeyi sağlar. Hoş, güzel, hijyenik, temiz pırıl pırıl bir görüntü oluşturur. Ayrıca çok sıcak havalarda da ağacı yanmaya karşı korumak. En büyük etkisi soğuk havalarda ağacı don vurmalarına karşı korumak . Küresel ısınma göz önüne alındığında mevsim değişiklikleri ani don, ani ısı artışları ve azalışları sonucunun doğuracağı etkenler için yararlı etkin bir yöntem. Gövdeden obur dalların çıkmasını azaltmak için sürülür. Kireçleme ağaçları güneş yanığından korumak için yapılıyor. Ağaçlar da güneşten yanabiliyorlar. Bu arada odun dokudaki gözenekleri doldurarak kapattığı için, zararlıların yuv

Medyan (Ortanca) Nedir? Nasıl Hesaplanır? Nerelerde Kullanılır?

Medyan işlemi olasılık hesaplamalarında sıkça kullanılan bir sayı dizisinin ortalamasını hesaplamak için alternatif yöntemlerden bir tanesidir. Ortanca medyan işleminin diğer adıdır. Matematiksel olarak medyan işlemi bir sayı dizisi küçükten büyüğe sıralayarak ortada kalan elemanı medyan değeri olarak belirleme işlemidir. Örnek verecek olursak: 2, 1, 5, 4, 5, 1, 2, 3, 5 serisi sıralanırsa 1, 1, 2, 2, 3, 4, 5, 5, 5 serisi elde edilir. Bu seri 9 elemanlı olduğundan ortadaki, yani 5. eleman (medyan) olacaktır. 5. eleman 3 sayısıdır. Yani ortanca değeri 3'dür Eleman sayısı tek sayı olan bir seride medyan değerin sırasının hesaplaması şu şekilde formüle edilir. Medyanın Sırası = (Eleman Sayısı + 1) / 2 Bu formülü yukarıdaki örneği uygulayacak olursak; Medyanın Sırası = (9 + 1) / 2 = 5 Veri serisi eleman sayısı bir çift sayı ise bu durumda serinin 2 medyanı olacaktır. Örneğin 2, 1, 5, 4, 5, 1, 2, 3, 5, 4 serisi sıralandığında 1, 1, 2, 2, 3, 4, 4, 5, 5, 5 s