Kod spaghetti :)

0

Hej,

Próbuję sobie tworzyć graficzne aplikacje w Visual Studio. Chciałbym nieco skrócić kod o powtarzające się operacje np:

                        this->Controls->Add(this->button1);
			this->Controls->Add(this->button2);
			this->Controls->Add(this->button3);
			this->Controls->Add(this->button4);
			this->Controls->Add(this->button5);
			this->Controls->Add(this->button6);

Stworzyłem sobie pętle jednak nie działa tak jakbym tego oczekiwał :)

 for(int i=1;i<7;i++)
         this->Controls->Add(this->button(""+i));

Jak powinienem wprowadzić pętle zamiast długiego kodu?

1

Powinieneś te buttony mieć w tablicy.

1

Zamiast pól button1, button2, itd., możesz stworzyć tablicę, do której będziesz odwoływał się za pomocą indeksu:

this->button[0], this->button[1]

Wtedy w pętli umieścisz wywołanie:

this->Controls->Add(this->button[i]); 
0

Dzięki za podpowiedzi. Próbuję stworzyć tablicę, ale poruszam się trochę po omacku w cli... Jak powinno to wyglądać?

Button^button[18];
for(int i=0;i<18;i++)
	button[i] = gcnew Button(this);
0

@garai, dlaczego piszesz w CLI?
Czytałeś może już ten wątek: http://4programmers.net/Forum/C_i_.NET/196733-o_naduzywaniu_c++cli?p=835492#id835492 ?

1

jako tablicy użyj klasy cli::array

array<Button^> ^tablica = gcnew array<Button^>(18);
for (int i=0; i<tablica->Length; i++)
{
   tablica[i] = gcnew Button();
   ... // ustawianie pozycji, tekstu, itd.
}
this->Controls->AddRange(tablica);

ewentualnie zamiast pętli z indeksem można użyć for each:

for each (Button^ %button in tablica)
   button = gcnew Button();

ale wtedy nie masz i, które mogło być przydatne do np. wyliczania współrzędnych

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