NTP C# Dersi 14: Form Uygulaması Geliştirme

Merhaba arkadaşlar, bu dersimizde Windows Form Uygulaması yapmayı öğreneceğiz. Yani Visual(tr: görsel) C# dilinin asıl geliştirilme alanı olan görsel programlamaya geçiş yapacağız. Yeni başlatacağımız projenin içerisinde metin kutusu, buton, etiket vs. görsel ögeler olacak.

Görsel Programlama Nedir ?

Görsel programlamayı açıklayabilmek için öncelikle kısaca programlamayı açıklayabilmek gerekir. Programlamayı açıklayabilmek için kısaca yazılımı açıklayabilmek gerekir. Yazılımı açıklayabilmek için ise makineyi açıklayabilmek gerekir. Bu tanımları kısaca açıkladığımız da zaten “ Görsel programlama nedir ? ” sorusuna en sağlam cevabı vermiş olacağız. İsterseniz kısa cümleler ile şu tanımları açıklayalım.

Makine: İnsanoğlunun zamandan ya da enerjiden tasarruf etmelerine yarayan her türlü eşyaya denir.

Yazılım: Makinenin yapması gereken işleri anlatan yazılı metne denir. Öyle ki gelişmiş makineler bu metinleri anlar ve fiziksel bir eyleme dönüştürür. Daha fayla detay için bakınız: NTP C# Dersi 0: Programlama Dili Nedir ?

Programlama: Makineye işini anlatan metni yazma ve makineyi bu metnin gereğini yerine getirebilir hale getirme işine programlama denir.

Gelelim görsel programlama nedir ?‘e. Görsel bir ara yüz olamadan programlama işini ancak bir yazılım geliştirici yapabilir. Çünkü bunu yapabilmek için bir bilgi birikimine ihtiyaç vardır. Ama gelişmiş ve karmaşık bir makine olan bilgisayarı her kesin kullanabilmesi ve bir bilgi birikimine ihtiyaç duymadan programlayabilmesi için görsel bir arayüze veya bir arayüz çeşidi olan form uygulamasına ihtiyaç vardır. İşte bu arayüzleri veya form uygulamalarını kodlayıp geliştirme işine görsel programlama denir. Form uygulamaları görsel programlamanın ürünüdür.

Not: Bilgi gerektirmeden yapılan programlamaya pasif programlama denebilir. Çünkü başta programlamanın “ yazılımı kodlamak ve değişkenlere değer atamak yani sistemin istediklerini girmek/yüklemek ” olduğunu anlatmaya çalıştık. Bilgi gerektirmeden ancak değişkenlere değer ataması yapılabileceği ve programlamanın kodlama ayağı gerçekleştirilmeyeceği için bu işe ancak pasif programlama denebilir.

Arayüz

Arayüzler bir makineyi kolay bir şekilde programlamamıza yardımcı olan görsel programlamanın ürünü yazılımlardır. Örneğin sitemizi görüntülerken kullanmış olduğunuz web tarayıcı bir arayüzdür. Ve tarayıcı sayesinde şuan siteyi oluşturan kodları görmeden makaleyi okuyabilmektesiniz.

Form Uygulaması Geliştirme

Bir form projesi açmadan önce düşünelim. Bir form uygulamasında ne tür ögeler vardır ?  Örneğin bir kaydet penceresinde ne vardır… Sol tarafta bir klasör ağacı, dosyayı kaydedeceğimiz ortamı gösteren bir explorer penceresi, dosyanın adını gireceğimiz bir metin kutusu, kaydet butonu vs. vs.

Öncelikle şunu hatırlatmakta fayda var form uygulamalarında bir yazılımdır ve bütün görsellik kodlarla sağlanır. Daha önceki derslerimizde Kod Kütüphanesi ve içerisinde sınıf/class geliştirmeyi öğrendik. Demek istediğim butonlar, metin kutuları (textbox), formlar birer dinamik class/sınıftır.

Konuyu daha iyi açıklayabilmek için New Project > Windows Forms Application projesi açalım. Forma iki textbox ve bir buton yerleştirelim. Sonra butona çift tıklayarak kod kısmını açalım ve aşağıdaki kodu yapıştıralım.

private void button1_Click(object sender, EventArgs e)
{
        string mesaj = textBox1.Text; // [01]
        textBox2.Text = mesaj; // [02]
        textBox1.Text = Convert.ToString(mesaj.Length);  // [03]
}
 // [01]: “textBox1″ nesnesinin değişken görevi gören “Text” metodundaki metni “mesaj” adındaki string değişkene yükledik.
 // [02]: “textBox2″ nesnesinin değişken görevi gören “Text” metoduna “mesaj” değikenindeki metni yükledik.
 // [03]: “mesaj” değişkenindeki metnin karakter sayısını string değere çevirip “textBox1″in “Text” metoduna yükledik.



Yukarıdaki kodlar TextBox’ların da birer sınıf olduğu kanıtlıyor. Hatırlayın classlar ve structların geneli için nesne tabirini kullanıyorduk.

Görüldüğü gibi Length metodu ile Text metodu arasında hiçbir fark yok. Biz daha önceden Length metodunun String sınıfının bir metodu olduğunu öğrenmiştik.(Üzerine gelip F12 yaparsanız görebilirsiniz.) Text de TextBox sınıfının bir metodudur. Arasındaki fark ise birinin görsel unsurlar da taşıyor olması. Toparlamak gerekirse TextBox da diğer nesneler gibi bir sınıftır ve Text de bu sınıfın bir metodudur. Form arayüzüne gelip, textboxa tıkladığımızda ve klavyeden bir metin girdiğimizde bu metin textBox1’in Text metoduna yükleni söyleyebiliriz. Burada dikkat edilmesi gereken unsur form nesnelerinin birer static sınıf değil dinamik sınıf/class olduğudur. Yani her textbaxın Text metodu aynı değeri taşımaz.

Acaba aklınıza şöyle bir soru takıldı mı ? “ TextBox dinamik bir sınıf ise kurucu metodu ile sınıfı kurduğumuz kodlar nerede ? ”

Form Uygulaması Kod Düzeni

Form1.cs dosyasında textBox1 üzerine gelip F12’yi tuşladığımızda Form1.Designer.cs dosyasındaki private System.Windows.Forms.TextBox textBox1; komutuna ulaşırız.

Form1.Designer.cs dosyasında #region Windows Form Designer generated code adında bir bölüm olacak, orada da private void InitializeComponent() metodu içerisinde this.textBox1 = new System.Windows.Forms.TextBox(); komutunu görebilirsiniz.

Ve ardından Form1.cs doyasında da public Form1() metodu içerisinde InitializeComponent() metodunun çağrıldığını göreceksiniz.

private void button1_Click(object sender, EventArgs e)

button1_Click metodunu incelediğimizde de button1’e tıklandığında çalışan metottur. Bu metodu da yine Form1.Designer.cs dosyasında this.button1.Click += new System.EventHandler(this.button1_Click); komutuyla tanımlandığını görebiliriz.

Tıklama olayını gerçekleştiren asıl metot button1.Click metodudur. Click metodu farklı bir metodudur. Event(tr:olay) türü bir metot. System.EventHandler(); metodu ile de çalıştırılacak olan metot seçilir.

This Komutu

This komutu nesnenin bulunduğu formu belirler. Bu Windows Form Uygulaması projemizde birden fazla form oluşturabileceğimiz anlamına geliyor.

Bir daha ki dersimizde ufak bir nesne oluşturacağız ama görsel kısmı olamadan maalesef, iyi çalışmalar arkadaşlar.


Önerilen diğer yazılar: 

Yorum Yap

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>