Tablica PictureBox`ow

0

Witam,

Prosiłbym o pomoc w rozwiązaniu problemu z którym ni jak nie mogę sobie poradzić. Otóż tworzę tablicę pictureBox`ow, którą wyrysowuje na formie. Jest to siatka o wymiarach 20x48. Do tego momentu wszystko ładnie działa, ale gdy próbuję je usunąć tą samą metodą, która je tworze, usuwa mi się tylko 10x20 oraz ostatni rząd. Dlaczego tak się dzieje?

[Kod C++]

public: array<System::Windows::Forms::PictureBox^>^ Sektory;

//Kod tworzacy sektory

Sektory = gcnew array<System::Windows::Forms::PictureBox^>(238);

 for(int i=0;i<20;)
                 {
                     for(int j=0;j<48;)
                     {
                        Sektory[10*i+j] = gcnew System::Windows::Forms::PictureBox;
                        Sektory[10*i+j]->Location = System::Drawing::Point((j+1)*30-30, (i+1)*30+130);
                        Sektory[10*i+j]->Name = "Sektor"+i.ToString()+j.ToString();
                        Sektory[10*i+j]->Size = System::Drawing::Size(30, 30);
                        Sektory[10*i+j]->TabIndex = 5;
                        Sektory[10*i+j]->BackColor = Color::Transparent;
                        Sektory[10*i+j]->Tag = (int)((i)*48+(j+1));
                        Sektory[10*i+j]->Click += gcnew System::EventHandler(this, &Form1::Przycisk_Click);
                        Sektory[10*i+j]->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;

                        pictureBox1->Controls->Add(Sektory[10*i+j]);
                        j++;
                     }
                     i++;
                 }

//Kod chowający sektory

for(int i=0;i<20;)
                 {
                     for(int j=0;j<48;)
                     {
                        Sektory[10*i+j]->Visible = false;
                        j++;
                     }
                     i++;
                 }

PS. Proszę o wyrozumiałość, dopiero się uczę :)

0

nie wiem czy zauwazyles, ale w siatce jest 20x48 bloczkow, a tablica P'Boxow zawiera 238 elementy(Pboxy), idac dalej... zauwaz, ze np. dla i=5 i j=3 Otrzymujesz index PBoxa 53, z kolei na przyklad dla i=3 i j=23 otrzymujesz ten sam index, ale PBox generowany jest juz w zupelnie innym miejscu, stad powstaje 20x48 "bloczków"...

I teraz kiedy usuwasz (defacto ich nie usuwasz, do usuwania sluzy metoda Remove()) usuwasz tylko te 238 "bloczkow" a reszta zostaje...

0

Ok widzę błąd! Poprawiłem i działa. Tak myślałem, że to jakaś pierdoła, ale jakoś nie mogłem tego zauważyć. Dzięki wielkie! ;-)

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