wyciąganie buttona z kolekcji kontrolek

0

Cześć :) Tworzę aplikację w winforms, która wygląda mniej więcej tak, że jest groupBox a w nim parę przycisków. Czy jest jakiś prosty sposób aby z kolekcji kontrolek wyciągnąć przycisk do innego obiektu typu button posługując się indexem? Chodzi mi o coś pokroju

Button btn = groupBox1.Controls.getControlByIndex(2); / Button btn = groupBox1.Controls.getChildByIndex(2);

Jeśli nie, będę ogromnie wdzięczny jeśli ktoś może podpowiedzieć jak taką operację zrealizować.
Zaglądałem do dokumentacji, ale niczego takiego jak podałem wyżej nie znalazłem, aczkolwiek możliwe że coś przeoczyłem/ czegoś nie zrozumiałem.
Z góry dziękuję za wszelką pomoc :)

1
Button btn = (Button)groupBox1.Controls.Cast<Control>().ElementAt(0);

Do tego potrzebujesz odpowiedniej przestrzeni nazw:
using System.Linq;
Przy tworzeniu projektu w Visualu on sam ją dodaje

1

Takie coś?

groupBox1.Controls[index]

0

Jak zwykle przekombinowałem :)

0
jacek.placek napisał(a):

Takie coś?

groupBox1.Controls[index]

O rany, tak to jest jak się szuka jakichś niestworzonych metod. Dziękuję bardzo. Dodam tylko od siebie że żeby przypisanie działało trzeba dodać rzutowanie a więc

Button btn = (Button) groupBox1.Controls[index];
0
Manuel.Artificer napisał(a):

Jak zwykle przekombinowałem :)

To przeze mnie bo sam zacząłem kombinować z jakimiś metodami zamiast [] :D. Niemniej dziękuję za pomoc :)

0

a jakichś niestworzonych metod. Dziękuję bardzo. Dodam tylko od siebie że żeby przypisanie działało trzeba dodać rzutowanie a więc

Button btn = (Button) groupBox1.Controls[index];

Chyba lepiej tak

Button btn = groupBox1.Controls[index] as Button;
if(btn != null)
{
// costam robisz z btn
}

albo sprawdzać przed przypisaniem czy Controls[index] na pewno jest Buttonem

if(Controls[index] is Button)
{
    Button btn = (Button) Controls[index];

}

W Twoim przypadku jak Controls[index] nie będzie buttonem to Ci wywali InvalidCastException i trzeba będzie to obsłużyć.

0

jacek.placek skoro już tak to rozpisałeś to warto jeszcze wspomnieć, że najpierw trzeba sprawdzić czy kolekcja zawiera elementy i czy indeks mieści się w przedziale :)

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