18 Temmuz 2013 Perşembe

Windows Form Control Library Project İle Gelişmiş Buton Kontrolü Yapımı

İkinci Blog Yayınımızda Winform Control Library Projesi Oluşturma Ve Gelişmiş Buton Kontrolü Oluşturma İşlemi Yapacağız.

Geliştirme Araçları

Visual Studio 2008
.Net Framework 3,5

Programlama Dili 

C#



Yaptığımız projelerde kullandığımız kontrolleri kendimiz oluşturabiliyoruz. Visual Studio paketimizde .net kütüphanesinde bulunan kontrollere yeni özellikler ekleyerek kullanabilriz.

İlk Olarak vs2008 i açıp new project menüsünden Windows Forms Control Library Projecti Seçiyoruz ve proje adımızı yazıp Ok butonuna tıklıyoruz vs projeyi oluşturuyoz.

Kontrolümüze ekleyeceğimiz özellik ?

Kontrolümüze daha önceden belirttiğimiz property değeri olan "filtertext" te belirtilen filtre bilgisine ve "filterindex" te belirtilen değere göre OpenFileDialog nesnesine atamak ve dialogda seçilen dosyanın adı kontrolümüzün "selectedfile" property sine atansın.Geliştiriciyi bu tanımlamaları yaparak ekstra kod yükünden kurtaralım.


Projemiz oluştuğunda
Solution Explorer
Daha sonra kod bloğuna geçip

public partial class UserControl1 : UserControl   
olan kodu
public partial class UserControl1 : Button
olarak değiştiriyoruz.buradaki amacımız UserControl olarak üretilmiş olan control tipini button olarak yapacağımızı ve bu controlün Button kontrolündeki tüm özelliklerini kullanacağını belirtmiş oluyoruz.Bu işlemden sonra tasarım ekranında döndüğümüzde tasarımsal olarak hiçbir işlem yapamayacağımızı görüyoruz. Properties windowu kontrol ettiğimizde standart bir button kontrolünde bulunan tüm özelliklerin burada olduğunu görebiliriz. Aynı şekilde events alanına baktığımızda standart bir button kontrolünde bulunan tüm eventların burada bulunduğunu görebiliriz. (Not: Burada bulunan events lar kullanıldığında nesneniz bir projede kullanıldığında ilk olarak usercontrol clasındaki event tetiklenir ve işlem yapar.)

Kod yazmaya başlayalım .

1. Butonumuza yeni properties değerleri eklemek istiyoruz nasıl yaparız?

Kod bloğumuza geçip öncelikle "Private" etiketiyle değişken tanımlaması yapmamız gerekiyor.Bunun sebebi property değerlerinin saklanacağı değişkenleri sadece tanımlanan class tan ulaşmamız gerektiğidir.Örnek olarak butona bir string değer tutan property eklemek istiyoruz.

        private string _filtertext = "All Files |*.*";

//değişkenimizi tanımladık

        public string filtertext
        {
            get
            {
                return _filtertext;
            }
            set
            {
                _filtertext = value;
            }
        }

//geliştiricinin kullanacağı filtertex property sini de tanımlıyoruz ve get set komutları değişkene değer ataması ve değer dönüşü sağlamış oluyoruz.

Şimdi diğer property değişkenlerini tanımlayalım


        private int  _filterindex = 0;

        public int filterindex
        {
            get
            {
                return _filterindex;
            }
            set
            {
                _filterindex = value;
            }
        }

        private string _selectedfile = "";

        public string selectedfile
        {
            get
            {
                return _selectedfile;
            }
            set
            {
                _selectedfile = value;
            }
        }

//Property tanımlamalarımızı yapmış olduk.

2. Kontrolümüzün Click Eventini kullanarak developer ın tanımladığı property bilgilerini kullanarak OpenfileDialog tanımlayıp seçilen dosyayı "selectedfile" property sine set etmek.

Öncelikle tasarım ekranındaki event sekmesinden click event ine çift tıklayarak click eventinin Visual studio ide sinin otomatik olarak oluşturması sağlanır.

        private void UserControl1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog op = new OpenFileDialog() { Filter = filtertext, FilterIndex = filterindex  })
            {
//Using boluğu kullanarak tanımlama yapıyoruz (tanımladığımız nesne bloktan çıkınca dispose(bellekten silinir.) edilir.
                if (op.ShowDialog() == DialogResult.OK)
                {
//eğer dosya seçimi yapılmışsa
                    selectedfile = op.FileName;
//selectedfile property sine seçilen dosya yolu bilgisi set ediliyor.
                }
            }
        }

Bu şekilde kontrolümüze ait kodları yazmış olduk.

Şimdi "ctrl + shift +b " kısayolunu kullanarak build edelim.

Build edilirken hata oluşacaktır. Hatanın yönlendirmesiyle ulaşılan autoscalemode satırı silinmesi gerekiyor(bunun sebebi usercontrol olarak türetilen kontrolü button olarak türetmiş olmamız) tekrar build ettiğimizde başarılı bir şekilde nesnemizi kullanılabilir duruma getirmiş oluyoruz. Geriye sadece yeni bir proje oluşturup nesnemizi referans olarak ekleyip property değerlerini girip kullanmamız kalıyor.

Örnek Filtertext değeri : "Txt_Files *.txt|*.txt| All Files |*.*"
Örnek Filterindex değeri :0

Evet şimdi sıra sizde sık kullandığınız ve bu şekilde pratik işlemler yapması gereken nesneleri kendiniz oluşturun ve kullanın.

Projeyi yayınlamak istemiyorum kendi projenizi oluşturup kodları kontrol ederek yapmanız daha iyi öğrenmenizi sağlayacaktır.

Malik Bakacak 

.Net Developer






Hiç yorum yok:

Yorum Gönder