ABD Münbiçi bırakır mı ?

ABD, Münbiçin yarısı sizde yarısı bizde kalsın dedi

SON 20 YILDA OSCAR KAZANAN KADINLAR

Son 20 yılda En İyi Kadın Oyuncu kategorisinde Oscar kazanan oyuncuların listesi...

AFRİN HAREKATI

Zeytin Dalı Harekatında teröristlerden temizlenen bölge artıyor

Silkroad XIAN

Silkroad sevdalıları için bir server

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
C# CheckState İçin Özel Metod

 
#1

C# projelerimde chechkbox kullandığımda gridview üzerinden veya veritabanından veri çekip, verilere göre checkbox nesnesini işaretli veya boş bırakmak için bir sürü kod yazıyordum.
Örneğin;
C#
Kod:
// verileri alacak olan kodlar

if (AktifMi == 1)
   CHK_PASIF.CheckState = CheckState.Checked;
else
   CHK_PASIF.CheckState = CheckState.Unchecked;

// yada

if (AktifMi == 1)
   // AktifMi  değişkenini int olarak alırsanız bu şekilde olur
   // AktifMi  değişkenini bool olarak alırsanız "if (AktifMi)" şeklinde kullanabilirsiniz.
   // çünkü if içerisinden her zaman "true" değer döner. Yani yazıdğınız değişken "true" ise
   // if çalışır false ise else çalışır.
   CHK_PASIF.Checked = true;
else
   CHK_PASIF.Checked = false;

// arkadaşlar ilk yöntemi kullanmak çok daha iyidir.
// ikinci yöntemde bazen nedense işlemleri yapmadığını farkettim.
// ama artık bu yöntemlere gerek kalmadı

Her checkbox için 4 satır kod yazmamız gerekiyor. Bugün bu kodları yazmak zoruma gitti ve daha kısa bir yol denemek istedim ve oldu. Ana sistem class dosyama bir metod ekledim ve bu işlemi tek satıra indirdim. Çokta güzel oldu..
NOT 1: İf veya Else bloklarında eğer tek satırlık işlem kullanacaksanız süslü parantezleri silebilirsiniz.
Şimdi yazdığım metodu paylaşayım.
C#
Kod:
       public static CheckState Checked_Kontrol(int deger)
       {
           CheckState cs = new CheckState();
           switch (deger)
           {
               case 0:
                   cs = CheckState.Unchecked;
                   break;
               case 1:
                   cs = CheckState.Checked;
                   break;
               case 2:
                   cs = CheckState.Indeterminate;
                   break;
               default:
                   MessageBox.Show(deger.ToString() + " Değeri bir checkbox için geçerli değil", "Değer Hatalı", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                   break;
           }
           return cs;
       }

Dikkat ettiyseniz yukarıdaki kodda switch içerisinde "2" de var. Arkdaşlar bu "2" nin "Indeterminate" yani "içi dolu" anlamına gelir. Indeterminate'in değerini bilmiyordum onu da şu şekilde buldum.

1494944120.PNG


Kod:
//formunuza 1 buton ve 3 checkbox ekleyin
private void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show(Convert.ToInt32(checkBox1.CheckState).ToString());
    MessageBox.Show(Convert.ToInt32(checkBox2.CheckState).ToString());
    MessageBox.Show(Convert.ToInt32(checkBox3.CheckState).ToString());
}
//bu şekilde sizde değerlerini görebilirsiniz.



NOT 2: Indeterminate durumu checkbox " işaretli mi? " sorusuna true değer verir. Yani içi dolu olsa da işaretlenmiştir. Indeterminate durumlarında özellikle işaretli mi? içi dolu mu? gibi soruyu ikiye ayırmak gerekir.

Gelelim kullanımına;

C#

Kod:
int pasif = null;
// pasif değişkenine veritabanından çektiğimiz veriyi atadık.
CHK_PASIF.CheckState = MyClass.Checked_Kontrol(pasif);

//  ya da

CHK_PASIF.CheckState = MyClass.Checked_Kontrol(Convert.ToInt16(dt.pers.Rows[0]["Pasif"]));



NOT 3: Bu gibi yerlerde Convert.ToInt16() kullanmanız performans açısından iyi olacaktır çünkü 32, 16'ya göre RAM'de daha fazla yer kaplar. 64 daha da fazla....
NOT 4: DevExpress nesnelerinden checkEdit' ler VS üzerinden özellikler kısmından " Indeterminate " olarak işaretlenmiyor ama Windows nesnelerinde varsayılan olarak " Indeterminate " olarak getirebilrisiniz.



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Asp.net Data Kontrolleri İçin Event Yönetimi sempatik141 0 1,127 20-06-2017, Saat: 17:36
Son Yorum: sempatik141

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2018 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2018 Tüm hakları saklıdır.