C# MessageBox Kullanımı

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


Merhabalar Arkadaşlar

Bu makalemde MessageBox kullanımını bir kaç örnek ile anlatmaya çalışacağım.

Hemen konuya girelim.

MessageBox C# 'da adından da anlaşılacağı gibi isteğimiz doğrultusunda ekrana mesaj kutusu çıkarmaya yarar ve sıkça kullanırız.
Lakin çeşitli kullanım şekilleri vardır. Şimdi o şekilleri beraber inceleyelim.

1 - Sadece mesaj göstermek için
    MessageBox.Show("merhaba");
Bu en basit kullanım şeklidir. bir kutunun içerisinde sadece yazı var. Kutunun başlığı da yok. Varsayılan olarak Tamam butonu var sadece.
İlk alan her zaman mesajın kendisidir.


2 - Mesaj ve Başlık göstermek için
    MessageBox.Show("merhaba", "Selamlama");
İlk kısım mesajın kendisidir. İkinci Kısım mesaj kutusuna başlık olarak eklenir.
Gördüğünüz gibi Selamlama başlıklı bir mesaj kutusu açıldı.

3 - Mesaj Başlık ve Butonlar
    MessageBox.Show("merhaba", "Selamlama", MessageBoxButtons.AbortRetryIgnore);

 Eklenen son alanda her zaman mesaj kutusu butonları yer alır. Bunlar arasında da;
     AbortRetryIgnore - Durdur, Yeniden Dene, Yoksay
     OK - Tamam
     OKCancel - Tamam, İptal
     RetryCancel - Yeniden Dene, İptal
     YesNo - Evet, Hayır
     YesNoCancel -  Evet, Hayır, İptal
şeklinde 6 farklı şekilde buton gösterebilirsiniz. Mesaj kutusunu kullandığınız yere ve amaca göre siz seçersiniz. aşağı doğru göreceksiniz diğerlerini de :)

4 - Mesaj, Başlık, Butonlar ve Simge
    MessageBox.Show("merhaba", "Selamlama", MessageBoxButtons.AbortRetryIgnore,     MessageBoxIcon.Asterisk);

            MessageBox.Show("merhaba""Selamlama", MessageBoxButtons.OK,     MessageBoxIcon.Error);

            MessageBox.Show("merhaba""Selamlama", MessageBoxButtons.OKCancel,     MessageBoxIcon.Exclamation);

            MessageBox.Show("merhaba""Selamlama" MessageBoxButtons.RetryCancel,     MessageBoxIcon.Hand);

            MessageBox.Show("merhaba""Selamlama", MessageBoxButtons.YesNo,     MessageBoxIcon.Information);

            MessageBox.Show("merhaba""Selamlama", MessageBoxButtons.YesNoCancel,     MessageBoxIcon.None);

            MessageBox.Show("merhaba""Selamlama", MessageBoxButtons.YesNoCancel,     MessageBoxIcon.Question);

            MessageBox.Show("merhaba""Selamlama", MessageBoxButtons.YesNoCancel,     MessageBoxIcon.Stop);

            MessageBox.Show("merhaba""Selamlama", MessageBoxButtons.YesNoCancel,     MessageBoxIcon.Warning);


Bazılarının simgesi aynı nedenini bende tam olarak bilmiyorum ama yanlış hatırlamıyorsam uyarı sesleri farklıydı. Tabi simgesine göre ayrı sesler çıkarıyor :)

MessageBox kullanım şekilleri yukarıda gördüğünüz gibidir arkadaşlar. Kodları ve sonuçları...
Şimdi birkaç örnek yapalım. Bunları genelde if şartları içerisinde kullanırız. Ben çoğunlukla normal mesaj vermek için yada onay almak için kullanıyorum.

if (Messagebox.Show("Kaydı onaylıyormusunuz?", "Onay Verin", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
     //MessageBox butonları geriye DialogResult değeri döndürür.
     // kayıt işlemleri kod bloğu
}
Else
{
        MessageBox.Show("Kayıt işlemi tarafınızca iptal edilmiştir.""Kayıt İptal", MessageBoxButtons.Ok,     MessageBoxIcon.Information);
//Hayır dediğimiz için bu alana girdi ve bir bilgi mesajı gösterdik.
}

Örneğe bakacak olursak, Bunu genelde kaydetme, güncelleme gibi işlemlerde kullanırız Onay almak için. Eğer açılan mesaj kutusunda vatandaş "Evet" derse kayıt işlemi yapılır "Hayır" derse işlem yapılmaz. Eğer ki biz bunu if'in içerisinde bu şekilde yazmazsak mesaj kutusu yine görünür ama "Hayır" dese bile kayıt işlemi yapılır.


Şimdi aynı örnek üzerinde farklı bir senaryoya göz atalım.
Kayıt işlemleri blogu yazdığımız yerde bir geri değer döndüren metodumuz olsun adıda Kaydet() olsun.

Metodumuzu yazalım.
bool Kaydet()
{
    // neden bool kullandığımızı aşağıda anlatacağım.
    if (Textbox1.Text == "")
    {
         Textbox1.BackColor = Color.Yellow;
         MessageBox.Show("Renkli alanlar boş geçilemez""Boş Alan Hatası", MessageBoxButtons.Ok,     MessageBoxIcon.Stop);
    //burada bir şarta göre mesaj kutusu göstermemizin bir anlamı yok. 
    //Çünkü şart sağlandığı için bu alana giriyor.
    }
    else
    {
          try
         {
             //Kayıt İşlemleri Bloğu
         }
         catch  //hata mesajını görmek istemiyoruz o yüzden " ex " i yazmıyoruz.
         {
                return false;
                // işlem başarısız oldugu için false gönderdik.
                //işlem başarılı olsaydı bu alana hiç girmezdi.
         }
         return true;
    }
}

Kaydet metodumuz hazır. bu metodda if de kullandık try catch da, if ile boş/dolu kontrolü yaptık. Eğer alan boş ise bir Stop mesajı verecek değilse devam edip try catch e geçecek. Burada kayıt herhangi bir sebepten dolayı tamamlanamaz ise catch'a düşecek ve deger false(yanlış) dönecek. Kayıt tamamlanırsa değer true(doğru) dönecek.

Şimdi Kaydet butonumuzun click eventine bu kodları yazalım.

if (Messagebox.Show("Kaydı onaylıyormusunuz?""Onay Verin", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
// Evet dersek kayıt işlemini yapmaya çalışacak 
{
//Evet dedik ve içerideki if e girdikten sonra metodumuza girdi
//şimdi oradaki işlemleri yapıp bize bir değer döndürecek
//bizde o değeri kullanarak başarılı/başarısız kontrolü yaparak kullanıcıyı bilgilendireceğiz.
     if(Kaydet() == true)
     {
     // eğer kayıt işleminde hata çıkarsa false dönecek, 
     // kayıt işlemi tamamlanırsa true dönecek
     //ve bizde bu geri dönen değeri kullanacağız.
      MessageBox.Show("Kayıt Başarılı""Başarılı", MessageBoxButtons.OK,     MessageBoxIcon.Information);
     }
     else
     {
      //eğer değer false dönerse bu kısıma gelecek 
      //ve kullanıcıya işlemin tamamlanamadığını bildirecek.
           MessageBox.Show("Kayıt işlemi sırasında bir hata oluştu""Başarısız", MessageBoxButtons.Ok, MessageBoxIcon.Warning);
     } 
}
Else
{
        MessageBox.Show("Kayıt işlemi tarafınızca iptal edilmiştir.""Kayıt İptal", MessageBoxButtons.Ok,     MessageBoxIcon.Information);
//Hayır dediğimiz için bu alana girdi ve bir bilgi mesajı gösterdik.
}


Gördüğünüz gibi arkadaşlar. Bir kayıt işlemi için kaç adet MessageBox kullandık. Tabi her zaman bu kadar yapmamıza gerek olmuyor. Şahsen ben sadece onay istedikten sonra kayıt yapıldı ve yapılmadı şeklinde 2 farklı mesaj gösteriyorum. Aşırıya kaçmak kullanıcıları bıktırır.

Şimdi de neden bool kullandık onu anlatayım.

Burada int yada string de kullanabilirdik ama bize evet yada hayır lazımdı. Yani kayıt yapıldı mı?
diye sorduğumuzda programın bize vermesini istediğimiz yanıtlar. Evet mi? Hayır mı? sadece bunun kontrolünü yaptık.

Ya bize birden fazla değer döndürmesi gerekiyorsa? Ozaman arkadaşlar int yada string kullanabiliriz ama ben performans açısından int i tavsiye ederim.
Şimdi örnekler ile inceleyelim.

int Islemlerim() // Mutlaka bir return değeri olmalıdır.
{
    int deger = 0;
 // birden fazla değer alabileceği için bir int tanımladık.
 // her işlemin sonunda bu degiskene bir deger atayacağız.
 // ama yalnız bir deger döner çoklu deger için farklı yöntemler kullanırız.

  //işlem kod bloğu
    deger = IsleminSonucu;

    return değer;
}

İşlemlerimizi yaptık ve bir sonuç çıkarıp değişkene atadık ve o degişkeni geri dönüş değeri olarak kullandık. Şimdi esas kullanmamız gereken yerde nasıl kullanırız ona bakalım.

Kaydet butonunun click eventine şu kodları yazalım.

if(Islemlerim() == 0)
{
  //dönen  değer 0 ise yapılacak işlemler
}
else if(Islemlerim() == 1)
{
  //dönen  değer 1 ise yapılacak işlemler
}

Bu kullanım şekli bize performans kaybı yaşatır. Performans kaybının sebebi ise her seferinde metoda girip işlemleri tekrar tekrar yapacak ki bu ek olarak hata payını da çoğaltır.. Performans kaybını minimize edecek bir yolumuz var. Degişken kullanmak;

int i = Islemlerim();
if(i == 0)
{
  //dönen  değer 0 ise yapılacak işlemler
}
else if(i == 1)
{
  //dönen  değer 1 ise yapılacak işlemler
}

String kullanımıda aynıdır. Bunda da sadece string bir değişken tanımlamak gerekir.

Aynı anda birden fazla değer göndemek isterseniz de List<T> kullanmanız gerekir. 
List<T> kullanımı içinde C# List Kullanımı makalemden öğrenebilirsiniz..

 List<int> islemlerim()
        {
           List<int> l =  new List<int>();

           // 1. işlem
           l.Add(0); // işlem 1 in sonucu

           // 2. işlem
           l.Add(1); // işlem 2 nin sonucu

           return l;
        }
Liste içerisinde ekldiğimiz değerleri nasıl kullanırız?
Kaydet butonunun click eventine şu kodları yazalım.

List<int> Listem = islemlerim();
if(Listem[0] == 0)
{
  //Listedeki 1. değer  0 ise yapılacak işlemler
}
else if(Listem[1] == 1)
{
  //Listedeki 2. değer  1 ise yapılacak işlemler
}

Şeklinde tek metod ile birden fazla değer döndürebilirsiniz.

Saygılarımla
Mustafa BÜKÜLMEZ


0 Yorum: