Sypro Mesaj tarihi: Haziran 30, 2010 Mesaj tarihi: Haziran 30, 2010 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..
fizban Mesaj tarihi: Haziran 30, 2010 Mesaj tarihi: Haziran 30, 2010 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.
Sypro Mesaj tarihi: Haziran 30, 2010 Konuyu açan Mesaj tarihi: Haziran 30, 2010 Olduramamak konusunda çok ciddi ısrarlarım var anlaşılan. Tekler sorun değil, çoklular delirtti ya resmen.
Tcpip Mesaj tarihi: Haziran 30, 2010 Mesaj tarihi: Haziran 30, 2010 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; }
Seele Mesaj tarihi: Temmuz 1, 2010 Mesaj tarihi: Temmuz 1, 2010 nested if her zaman kötü bir yazim seklidir yapmayin yaptirtmayin.
fizban Mesaj tarihi: Temmuz 1, 2010 Mesaj tarihi: Temmuz 1, 2010 if (p) blabla if (q) bleble if (r) bloblo if (p && q) hedehodo if (p && r) hodohede if (q && r) birbirbr bunu demektense nested yazmak daha hızlı calısır.
Mirage Mesaj tarihi: Temmuz 2, 2010 Mesaj tarihi: Temmuz 2, 2010 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.
Kojiroh Mesaj tarihi: Temmuz 2, 2010 Mesaj tarihi: Temmuz 2, 2010 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.
Deacon Mesaj tarihi: Temmuz 3, 2010 Mesaj tarihi: Temmuz 3, 2010 Seele said: nested if her zaman kötü bir yazim seklidir yapmayin yaptirtmayin. sebep?
Öne çıkan mesajlar