C# CheckBox - do tablicy LOO

0

Witam - jestem zielony

Tak sobie buduje programik w ktorym jest kilkadziesiąt (20 sztuk) CheckBox-ow i potrzebuje załadowąc ich stan do tablicy

Myslałem ze moge do tego wykorzystać petele for - ale mam problem przypisaniem wartości

for(int i=0; i<20;i++){

tab[i]=??????// tutaj własnie mam problem

}

Dziękuje wszystkim za pomoc

0

Umieść wszystkie checkbox-y na panelu i wtedy wystarczy:

for(int i = 0 ; i < panel1.Controls.Count ; i++)          
 tab[i] = ((CheckBox)panel1.Controls[i]).Checked;
0

Zrobiłem tak jak pisałeś - wyskoczył taki komunikat jak próbowałem przypisać

Nie można rzutować obiektu typu System.Windows.Forms.DateTimePicker na typ System.Windows.Froms.CheckBox

0

Bo DateTimePicker to nie jest CheckBox, prawda? Nawet z wyglądu go nie przypomina.
Więc zanim spróbujemy rzutować, to upewnijmy się, czy rzutujemy obiekt odpowiedniego typu. Można to zrobić np. tak:

int i = 0;
foreach(Control c in panel1.Controls)
if(c is CheckBox)
{
tab[i] = ((CheckBox)c).Checked;
i++;
}

0

Ehhh, złe nawyki macie z tym przeglądaniem komponentów. Jeżeli już to robić to tylko raz !

List<CheckBox> checkBoxy;

//przy starcie progsa
foreach(Control c in panel1.Controls)
    if(c is CheckBox) checkBoxy.Add(c);

lub z użyciem linq (od .NET 3.5 w zwyż)

CheckBox[] checkBoxy;

//przy starcie progsa
checkBoxy = panel1.Controls.OfType<CheckBox>().ToArray();

Poza tym jak jest ich tak dużo, to zamiast wyklikać w designerze twórz je w pętli dynamicznie i od razu zapisuj w kolekcji.

0

adf88 - fajny pomysł tylko dynamicznym tworzeniem powiec gdzie to umieścić? i jak zrobić aby były w 3 poziomach po 10 sztuk CheckBox i jak im opis przypisac np a,b,c itd..

0

@up:
Nazwa_formy.Designer.cs <- doskonaly przyklad jak sie to robi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1