Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

[C#] Checkbox ve Label ilişkileri


Öne çıkan mesajlar

Mesaj tarihi:
C# ile abuk bişi yapma denemem var bu aralar.. Şöyle hayal edin; 4 tane checkbox ve 15 tane label var.
Form geldiğinde tüm label'lar için Visible = false; geliyor. Checkbox'lar da zaten bu false değerini true yapmak için var. Mesela ilk checkbox için
said:
if (checkBox1.Checked == true)
label1.Visible = true;

durumu mevcut, aynı şekilde 2 3 4'üncü checkbox'ların 2 3 4'üncü label'lar ile de sorunu yok.

Sorunun başladığı nokta çoklu seçimler. Mesela 1 ve 2. checkbox'ları checked yaptığımda, 1 2 ve 5. label'ların gözükmesi gerek; fakat 1 ve 2 gözüküyor, 5'ten ses seda yok.
said:
if ((checkBox1.Checked == true) && (checkBox2.Checked == true))
label5.Visible = true;



hoş bunu böyle elli tane if/else ile yazmaktan daha kolay bir yol da vardır mutlaka ama aklıma gelmiyor.
ilim irfan fikir sahibi kişilerin fikirlerini paylaşmalarını dört gözle bekliyorum artık..
Mesaj tarihi:
garip ama gerçek; şöyle dene

if (cb1.checked) {
if (cb2.checked) {
label5.vis = true;
} else if (cb3.checked) {
label6.vis = true;
}
label1.vis = true;
}

yani aynı kontrolü iki kez yaparken salaklaşıyor olabilir, ona göre bir nested if condition koy belki işe yarar.
Mesaj tarihi:
void vercoskuyu()
{
long int deger = 0;
if(checkbox1.checked)
deger+=1;

if(checkbox2.checked)
deger+=10;

if(checkbox3.checked)
deger+=100;

if(checkbox4.checked)
deger+=1000;

if(deger%10 == 1)
label1.visible = true;

if(deger%100 > 10)
label2.visible = true;

if(deger%1000 > 100)
label3.visible = true;

if(deger%10000 > 1000)
label4.visible = true;
}
Mesaj tarihi:
Kodu görmeden bir şey diyemicem ama beni rahatsız eden boolean karşılaştırmasını eşittirle yapman oldu.

if (checkBox1.Checked == true)

yerine

if (checkBox1.Checked)

yazarsan çok daha okunaklı olur. Tersini kontrol ederken de:

if (!checkBox1.Checked)

Edik: Sorununla bir alakası yok tabi bu yorumun.
Mesaj tarihi:
Tüm checkboxların checkedchanged event'ine aynı metodu koy. Mesela labelyenile().


void labelyenile()
{
label1.Visible = (checkbox1.Checked && checkbox2.Checked && ...);
label2.Visible = (checkbox4.Checked && checkbox10.Checked && ...);
...
}


Şimdi şu soru var kafamda:
Tek bi label'ın visible olması için birden fazla durum olabilri mi? Label 1, checkboxlar 1 ve 2 veya 5 ve 6 işaretliyken görünür olsun, gibi.
Eğer böyle bi durum varsa, her label için yuakrda yazığım metodun içindeki and gruplarını or'licaksın. Mesela verdğim örnekte:

label1.Visible = (checkbox1.Checked && checkbox2.Checked) || (checkbox5.Checked && checkbox6.Checked);



Ha eğer bi label sadece tek bi durumda görünür oluyosa ve diyelim labellar 1, 2 ve 5 yalnızca checkboxlar 3 ve 4 işaretliyken görünür oluyosa şöyle de yapabilirsin:


label1.Visible = label2.Visible = label5.Visible = (checkbox3.Checked && checkbox4.Checked);


Böylece her label için ayrı ayrı yazmana gerek kalmaz aynı satırı. Ama dediğim gibi ilk sorunun cevabına bağlı bu.
×
×
  • Yeni Oluştur...