Son Dakika Haberleri

25 Aralık 2007 Salı

User Control Geliştirme(Aydın ÜNLÜ)

Merhaba arkadaşlar;
Bu makalemde sizlere .net üzerinde C# dilini kullanarak User Control oluşturmayı anlatacagım. Peki User Control nedir ve ne gibi durumlarda işe yarar önce bunları tanımlayıp ardındanda ufak bir örnek üzerinde anlatıp, uygulamaya gececeğim.User Control, kullanıcının kendisinin sıfırdan, kendi ihtiyacları dogrultusunda oluşturabileceği kontroldür. Mesela bir textbox.....Hemen textbox diye bir kontrolün zaten var oldugunu söylediğinizi duyar gibiyim :) Tabiki bunu basit bir textbox olarak düşünmeyin. Örnek vermek gerekirse, bir textbox' a girilen bilginin sadece sayısal bir bilgi olmasını istiyoruz, yani A-B-C gibi alfanümerik bilgilerin girilmesini istemiyoruz dimi. Bunun kodu zaten bellidir ve zor bir yanı yoktur bu kodun. Peki uygulamanızda kullanacagınız textbox sayısı 30 taneyse veya dahada fazlaysa ne yapacaksınız? Hemen söyleyeyim, aynı kodu alırsınız kopyala yapıştır yaparsınız bütün textboxlara :) Ama göründüğü gibi cok komik ve programcılık acısından mantıksız bir durumdur. Hem mesela ilerde bu kod üzerinde bir değişiklik yapmak isteseniz ne yapacaksınız, tekrar bütün kodlarda düzenlemeye gitmek gerekir. İşte User Control dediğimiz kavram tam olarak burda bizim imdadımıza yetişiyor. Kendimiz bir textbox controlü hazırlayıp, buna gereken kodu yazıp, sonra bunu projemizde kullanıyoruz. Bu örnek üzerinden yola cıkarsak hemen uygulamaya geçelim, böylece ne demek istediğimi cok daha iyi anlayacaksınız.


1-) Öncelikle Visual Studio 'yu çalıştırıp, Windows Control Library 'i seçip myTextBox olarak bir isim veriyoruz.



2-) Proje acıldıktan sonra karşımıza standart windows applicationlardan farklı olarak bir form cıkacak, bu formun bir baslık cubugu yok. Zaten biz formu kullanmaktan ziyade form üzerine koydugumuz kontrol üzerinde işlem yapacagız. Bunun için formun üzerine bir textbox koyuyoruz ve adınıda txtBox olarak belirtiyoruz. Formun adını ise myTextBox olarak belirtiyoruz.


3-) Kontolümüzü forma koyduktan sonra kod sayfasına geçip textbox' ın Key_Press eventi altına aşagıdaki kod blogunu yazmamız gerekiyor. Bu kod baslılan tusun kontrölünü yapar, eger nümerik bir bilgi girilmişse bunu textbox icine ekler. Ama alfanümerik bir bilgiyse bunu textbox icine eklemez


private void txtBox_KeyPress(object sender, KeyPressEventArgs e){if (Char.IsDigit(e.KeyChar) == false && Char.IsControl(e.KeyChar) == false) e.KeyChar = '\0'; }

4-) Evet kodlarımızı yazdıgımıza göre artık textbox' ımızı kendi uygulamalarımızda aynı işlem icin 1 satır bile kod yazmadan kullanabiliriz :) Öncelikle User Control' ümüzü derlememiz gerekiyor. Bunun için önce Debug olarak varsayılanda olan derleme şeklini Release olarak seçiyoruz. Ardından Build Menüsünden; Build >> Build Solution ile projeyi derliyoruz.Kontrolümüz projenin bulundugu dizinde de, Release klasörü içinde bulunuyor.

5-) Şimdi bu User Control projesini kapatıp, yeni bir windows application acıyoruz, ismi cokta önemli değil :) Bu kendi projenizde olabilir tabiki. Bu aşamada yapacagımız işlem, oluşturdugumuz myTextBox isimli kontrolü projemiz içine ekleyip onu kullanmaktır.Peki bu control' ü projemize nasıl ekleriz, bu zaten işin en kolay kısmı :) Hemen daha önceden oluşturdugumuz bu user kontrolü bulundugu yerden kopyalayıp, yeni projemizin bulundugu dizindeki, debug klasörü içine yapıştırıyoruz.

Sonra Visual Studio 'a geri dönerek toolboxta herhangi bir yere sag tıklayıp, Choose Items 'ı seçiyoruz.



Ardından karşımıza cıkan pencerede, Browse 'a tıklayıp, debug klasörü içine attıgımız myTextBox.dll isimli dosyayı secip open diyoruz. Ardından ilk acılan pencerede OK diyerek işlemi onaylıyoruz, zaten kontrol listede görünecektir.






Artık kontrolümüz toolbox 'a eklenmiştir. İstediğimiz gibi kullanıma hazırdır :)







Formun üzerine birtane koyup projeji çalıştırığ, hemen bir deneme gerçekleştirebilirsiniz, gördügünüz gibi sadece sayısal değerler girebiliyoruz.Bir makalemin daha sonuna geldik, internette mutlaka bu konu üzerine kaynak ve başka arkadaşların yazdığı yazılar göreceksinizdir, ama bu yazıda benim bu konuya bakış acımdan benim anlatımımla yazılan bir yazıdır, umarım sizler için faydalı olmuştur.Kafanıza takılan yerler veya makale hakkında önerileriniz varsa bunları seve seve okumaktan mutluluk duyarım. Bir başka makalede görüşmek üzere, hoşçakalın...
Mehmet Aydın Ünlü

6 yorum:

Tolga dedi ki...

Sade ve net bir anlatım olmuş. Paylaşım için teşekkürler.

Ek olarak bir sorum olacak.
Geliştirmekte olduğumuz windows application içine add>new item>usercontrol diyerek usercontrol eklediğimizde bunu aynı anlatımınızda olduğu gibi diğer formlar içinde kullanabilme şansımız oluyor mu? Yoksa illa new project>windows forms control library mi yaratmamız gerekiyor?

Adsız dedi ki...

olur

Adsız dedi ki...

Teşekkürler Şinasi Bey bir problemim daha eksildi :)

Borahan dedi ki...

bu kontrolü kaydet butona nasıl ekliyoruz mesala textboxların boş geçilmemsini istiyoruz ve kaydet diyince önce o userkontrolü kontrol edilmesini hangi kod ile yapıyoruz

Unknown dedi ki...

Borahan.. Bunun için recursive bir static extension kullanabilirsin.. Ben static bir string extension kullanıyorum bunun için.. formdaki görünür tüm kontrolleri Linq ile listeliyorum, text içeriği boş ise kontrolün backcolor özelliğini farklı renk yapıyorum.. Text te yazı olduğunda da yine orjinal rengine çeviriyorum.. Kolay ve hızlı bir yöntem ;)

Unknown dedi ki...

Buton için yazılması gereken kod nedir ben mesala butonun click eventini ve doubleclick eventini kullanıcam ikisinede kod yazmam gerekir mi yada kullanış amacıma göremi kod yazmam gerekli , birde ben butonu yaptıktan sonra yaklasık 200 tane eklemem gerek tek tek sürükleyerekmi ekliyicez, buton boyutlarını ayarlarken verebilirmiyouruz butonu hazırlarken