C# Pętla dla 'guzik1.Enabled = true;'


(Shaken) #1

Witajcie,

czy w c# można zastąpić poniższy kod jakąś pętelką?

guzik1.Enabled = true;
guzik2.Enabled = true;
guzik3.Enabled = true;
...
guzik22.Enabled = true;

Podobnie przy buttonach?

...
        private void kalkulator_5_Click(object sender, EventArgs e)
        {
            kalkulator_okienko.AppendText("5");
        }
        private void kalkulator_6_Click(object sender, EventArgs e)
        {
            kalkulator_okienko.AppendText("5");
        }
        private void kalkulator_7_Click(object sender, EventArgs e)
        {
            kalkulator_okienko.AppendText("5");
        }
...

Pozdrawiam

i z góry dziękuję za pomoc!


(Grzelix) #2
  1. Wrzuć "guziki do listy (podczas tworzenie tych kontrolek) i potem będziesz mógł iterować po tak utworzonej kolekcji.

 

  1. Czy zawsze jest tam 

    appendText(“5”)

?

 

aby obsłużyć zdarzenia musisz mieć jego deklaracje (tak mi się przynajmniej wydaje). Ale logikę możesz zamknąć w jednej metodzie i sparametryzować przez parametr “sender” - na jego podstawie sprawdzać który button został wciśnięty. 


(Shaken) #3

Możesz coś więcej napisać o tej liście? Nie bardzo rozumiem.

Nie wszędzie ma być 5, jeszcze kod nie jest dokończony i nie zauważyłem tego przy tworzeniu tematu.

Zgodnie z : kalkulator_6_Click ma pojawiać się appendText(“6”) itp.


(pebal) #4

Przyciski umieść na kontrolce Panel i ustawiaj właściwość Enabled tylko dla panela.

 

Kontrolki przycisków mają właściwość Tag. We wszystkich przyciskach przypisz tej właściwości przypisaną do przycisku cyfrę. Następnie wszystkie przyciski podepnij pod jedną metodę obsługi zdarzenia:

private void button_Click(object sender, EventArgs e)
{
  kalkulator_okienko.AppendText((sender as Control).Tag.ToString());
}