C#, hogyan használjam erre a for ciklust?
Nos tehát, hogyan tudnék for ciklussal pl textboxokon, vagy checkboxokon végig menni?
Pl:
for(int i = 0; i < 10; i++)
{
checkbox.Enabled = false;
}
Hát a lényeges részt pont nem tettem bele... Mert nem tudom hogy kell.
Tehát úgy akarom érteni hogy van 10db Checkbox és egy ciklussal az összesnek megváltoztatni az értékét, hogy mondjuk az összeset eljejtem, vagy engedélyezetté teszem stb... Remélem érthető.
A checkboxok egy listában vannak, vagy hogy?
for(int i = 0; i < cbList.Length; i++)
{
cbList[i].Enabled = false;
}
Ha csak a formon, akkor a legszebb sztem, ha a Contols tömbön mész végig, és megnézed a típusát, hogy CheckBox-e...persze reflecionnel is le lehet kérni név alapján, de az már nagyon "csúnya"
Control[]t= new Control[20];
for (int i = 0; i < t.Length; i++)
{
if (t[i] is CheckBox)
{
(t[i] as CheckBox).Checked = true;
}
}
itt az "is" kulcsszóval ellenörzöd az adott kontrol tipusát
az "as" kulcsszóval meg tipuskényszerítését végzel
pontosan, ahogy az előző válaszoló írta.
a t tömb pedig a Controls tömb (formnak van ilyen propertyje), azaz
var t = Controls;
a (t[i] as CheckBox).Checked helyett pedig én
((CheckBox)t[i]).Checked -et írnék, mivel egyrészt rövidebb, másrészt ha valamiről tudjuk hogy milyen típusú szerencsésebb castolni, mint as-zel átalakítani, mivel az "as" eredménye null-t ad vissza, ha mégsem az a típus, így a későbbiekben (természetesen nem a konkrét példában) relevánsabb exceptiont kapunk ha valahol hibáztunk. (Cast exception a nullreference exception helyett)
Harmadrészt a Resharper nevű VS kiegészítő is ezt ajánlja.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!