C# Form İçinde Metodlarla Çalışmak (Tüm Form)

Ağustos 11, 2016 Mustafa BÜKÜLMEZ 0 Yorum


Selamlar Arkadaşlar

Bu konuyu daha önce işlemiştik. Bugun daha genel bir anlatım yapacağım. Daha doğrusu bir form içerisinde genel olarak nasıl kullanırız ona bakacağız.

Daha da genelleyecek olursak, bundan önceki parça parça hazırladığım makalelerin toplu kullanımını göreceğiz. (basitçe anlatacağım)

Başlayalım o halde,

Projemizde yeni bir form açıyoruz ve forma 2 textbox ve 1 button ekliyoruz.

Önce kullanacağımız voidleri hazırlayalım.

Not: Formun Load eventini daima en üstte tutun yani ben hep öyle yapıyorum.

SQLIslemleriClassim sql =  new SQLIslemleriClassim();

Public int RECno = 0 ;
private void Form1_Load(object sender, EventArgs e)

{
   if (RECno > 0)
   {
          KartOku();
          // Eğer RECno dolu gelirse tablodaki o recno'ya ait kaydı çekecek ve kendi alanlarına
          // doldurmuş olacak. RECno da dolu geldiğinden dolayı yaptıımız değişiklikler
          // update olacak. Yani kaydı değiştirmiş olacağız.
   }
   else
   {
         Temizle();
   }
}

void KartOku()
{
     DataTable dt = sql.TabloGoster("select Adı, Kodu from TABLO_ADI where RECno = "+RECno +" ");
     // bu sorgudan tek satır veri dönecek o yüzden dt.Rows[0] şeklinde olmalı. 
     //Yani ilgili datatable'deki ilk satır.
     Textbox1.Text = dt.Rows[0]["Adı"].ToString();
     //datatable'nin ilk satırındaki Adı stununa denk gelen hücredeki değer.
     Textbox2.Text = dt.Rows[0]["Kodu"].ToString();
     //datatable'nin ilk satırındaki Kodu stununa denk gelen hücredeki değer.
}

void Temizle()
{
     RECno = 0;
     // SQL işlemini RECno' ya göre yapacağımız için. Her işlemden sonra 
     // sıfırlamamız gerekmektedir. Yoksa SQL işlemlerinde sorun yaşarız.
     Textbox1.Text = "";
     Textbox2.Text = "";
}
//insert yada update ten sonra nesneleri ve değişkenleri temizledik.

void Kaydet()
{
    // SQL kayıt kod bloğu
    // Form kapanacaksa
    // Close();
    // Form kapanmayacaksa
    // Temizle();
}

void Guncelle()
{
     //SQL güncelleme kod bloğu
    // Form kapanacaksa
    // Close();
    // Form kapanmayacaksa
    // Temizle();
}

 private void Button1_Click(object sender, EventArgs e) 


     if(Textbox1.Text == "" || Textbox2.Text == "") // EĞER
     //Zorunlu alanları belirledik. boş bırakılırsa uyarı verecek.
     {
         Textbox1.BackColor = Color.Yellow
         Textbox2.BackColor = Color.Yellow
         MessageBox.Show("Renkli Alanları Boş Bırakamazsınız.");
     }
     else if (RECno  >  0) // DEĞİLSE EĞER
     {
           Guncelle();
     }
     else // DEĞİLSE  
     {
            Kaydet();
     }

}


Butonun click eventine bir bakalım.

if'deki ilk şartımız dolu boş kontrolü sağlamak içindi. Eğer şarttakiler dolu ile " Else If " e geçer yani 2. if e. Burada da  RECno 0 dan büyükse diye bir şartımız var. Bunu neden yaptığımızı
C# Formlar Arası Veri Aktarımı adlı makalemi inceleyerek anlayabilirsiniz. Eğer RECno da 0 ise ki o zaman kayıt işlemi yapmış oluruz


Buttonun click eventinde kontrollerimizi yaparak işlemlerimizi yaptık. Şimdi burada iki seçeneğimiz var.

1. SQL işleminden sonra formun kapanmasını istersek ilgili bloğun en altına  " Close(); " eklememiz gerekiyor.

2. SQL işleminden sonra formun kapanmadan işleme devam etmesini istiyorsak ilgili bloğun en altına  " Temizle(); " eklememiz gerekiyor. eğer bunu yapmazsak her butona tıklamasında aynı kaydı tekrar tekrar açar ve mükerrer kayıt(aynı kayıttan 2 tane olması) olur. Eğer en son güncelleme işlemi yapmışsak. Bu seferde biz yeni kayıt açıyor sanarız ama aslında en son güncelleme yaptığımız kaydı tekrar tekrar günceller dururuz.


Edit 1 = Merhabalar :D bu konuda eksik kaldığını düşündüğüm birşeyi daha sizlerle paylaşmak istiyorum. :)

Diyelimki bir formda bir yazdırma işlemi yapacaksınız. Tek form içerisinde hem bir gridView hemde kayıt alanınız var. (Benim projelerimde genelde bu şekildedir ;) )

Hem altta butonlar grubu içerisinde bir "Tüm Listeyi Yazdır" butonum olur her zaman hem de gridView'e bir ContextMenuStrip(sağ tık yapınca açılan menüdür.) ekleyip onun içine "Tüm Listeyi Yazdır" eklerim. Yani toplamda iki kere aynı işlemi yaptırmam gerekiyor. Yani aynı kodları iki kere yazmam gerekiyor. (20 satır desek toplam  40 satır olur.) Gerekiyorda... Tüm makalelerimi okuduysanız birinde büyük harflerle bir not yazmıştım onu hatırlarsınız. Hepsini  okumadıysanız Buraya Tıklayarak (en altta) okuyabilirsiniz. Şimdi işlem kodlarını bir kere yazıp sürekli nasıl kullanırız onu görelim.

ContextMenuStrip Click Eventimiz.
private void TümListeyiYazdırToolStripMenuItem_Click(object sender, EventArgs e)
        {
             //normal şartlarda buraya tüm yazdırma kodlarımızı yazarız.
             // ve bu kodların toplam 20 satır olduğunu varsaylım.
        }
Button Click Eventimiz.
private void BTN_LISTE_Click(object sender, EventArgs e)
        {
             //normal şartlarda buraya tüm yazdırma kodlarımızı yazarız.
             // ve bu kodların toplam 20 satır olduğunu varsaylım.
        }

Yukarıdaki şekilde iki defa aynı kodu yazmış olduk. Ama yoooook böyle olmaz bu işlemi on kere yaptıracaksak ne olacak on kere aynı kodu kopyala yapıştır mı yapacaz? Tabiki de hayırrrr. Hemen bir ListeYazdir(); void'i açalım ve kullanalım.

 void ListeYazdir()
        {
            // tüm yazdırma ile ilgili kodlarımızı buraya yazıyoruz.
        }

ContextMenuStrip Click Eventimiz.
private void TümListeyiYazdırToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ListeYazdir();
        }
Button Click Eventimiz.
private void BTN_TumListeyiYazdır_Click(object sender, EventArgs e)
        {
            ListeYazdir();
        }

İşte arkadaşlar yukarıda gördüğünüz gibi bir void ile bir sürü kod tasarrufu yapmış ve hammalıktan kurtulmuş olduk.
Üstelik bir değişiklik yaptığınızda aynı anda formdaki tüm yazdırma işlemlerine etki edecektir. Tek tek arayıp uğraşmayacaksınız.

Edit 2 = Merhabalar :D bu konuda eksik kaldığını düşündüğüm birşeyi daha sizlerle paylaşmak istiyorum. :) Önemli bir kısmı atlamışım :)

Yukarıdaki örneğe göre olurda 2 farklı şekilde kullanmanız gerekirse; Atıyorum rapor başlıklarını ve alt bilgileri farklı raporlarda faklı olması isterseniz bu şekilde yapabilirsiniz.

 void ListeYazdir(string RaporBaslik, string RaporAltBilgi, int GelinenYer)
        {
             if (GelinenYer == 0)
             {
                     //raporbaşlığıkodları = RaporBaslik;
                     // tüm yazdırma ile ilgili kodlarımızı buraya yazıyoruz.
                     //raporaltbilgikodları = RaporAltBilgi;
             }

            if (GelinenYer == 1)
             {
                      //raporbaşlığıkodları = RaporBaslik;
                     // tüm yazdırma ile ilgili kodlarımızı buraya yazıyoruz.
                     //raporaltbilgikodları = RaporAltBilgi;
             }
        }

ContextMenuStrip Click Eventimiz.
private void TümListeyiYazdırToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ListeYazdir("Rapor Başlık Bilgisi","Rapor Alt Bilgisi ",0);
        }

Button Click Eventimiz.
private void BTN_TumListeyiYazdır_Click(object sender, EventArgs e)
        {
            ListeYazdir("Rapor Başlık Bilgisi","Rapor Alt Bilgisi ",1);
        }

Şeklinde parametreli metod kullanabilirsiniz. :) Geliştirmek de size bağlı :D


Saygılarımla
Mustafa BÜKÜLMEZ
http://mustafabukulmez.com/


0 Yorum: