Dwuwymiarowa tablica komponentów [c++/cli]

0

Witam.

Mam problem z utworzeniem dwuwymiarowej, dynamicznej tablicy komponentów w Visual Studio '08.
Jednowymiarowa wygląda tak

array<System::TextBox> tablica;

tablica = gcnew arraySystem::Windows::Forms::TextBox^(liczba);

a jak to zrobić żeby teraz w pętli dla każdego elementu tej tablicy stworzyć nową tablicę?

z góry dzięki za pomoc,
pozdrawiam

0

nie znam zbytnio tego dziwnego C++ z visuala ale raczej bym zrobil cos takiego:

array< array<System::Windows::Forms::TextBox> > tablica;
0

tylko jak później stworzyć w tych tablicach obiekty?

0

w ciemno strzelam, że tak:

array< array< System::Windows::Forms::TextBox^ > > tablica;

tablica = gcnew array< array< System::Windows::Forms::TextBox^ > >(liczba1);
for (int i=0; i<liczba1; i++) // strzelam ze jest jakis optymalniejszy sposob iterowania, ale go nie znam
  {
    tablica[i] = gcnew array< System::Windows::Forms::TextBox^ >(liczba2);
  }

liczba1, liczba2 - wymiary

1

Mam problem z utworzeniem dwuwymiarowej, dynamicznej tablicy komponentów w Visual Studio '08.

rozwiązanie 1: tablica dwuwymiarowa. każdy wiersz tabeli musi mieć ten sam rozmiar (tablica prostokątna)

	array<TextBox^,2> ^tablica1 = gcnew array<TextBox^,2>(10,10); //  N,M

rozwiązanie 2: tablica tablic. każdy wiersz może mieć inny rozmiar (tablica „poszarpana”)

	array<array<TextBox^>^> ^tablica2 = gcnew array<array<TextBox^>^>(10); // N
	for each (array<TextBox^>^ %row in tablica2)
		row = gcnew array<TextBox^>(10);  // M

jeśli tablica ma być prostokątna (N × M) wygodniejsze jest stworzenie prawdziwej tablicy 2-wymiarowej zamiast — jak sugerowałeś — tablicy tablic.

tylko jak później stworzyć w tych tablicach obiekty?
No jak jak? normalnie:

    tablica1[3,2] = gcnew TextBox();  // tablica 2-wymiarowa: przecinek
    tablica2[3][2] = gcnew TextBox();  // tablica zagnieżdżona: dwa indeksy

oczywiście wypadałoby to zrobić w jakiejś pętli.

PS. dla uproszczenia zapisu przyjąłem, że jesteśmy w using namespace System::Windows::Forms;.

PS2. w VC++ 2010 dodano inferencję typów, można napisać

auto tablica1 = gcnew array<TextBox^,2>(10,10); // „auto” - standard C++0x. odpowiednik słowa „var” z C#

zaoszczędza to podwójnego lub potrójnego pisania wężowideł typu.

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