tablica obiektow generowanych dynamicznie

0

Mam tablice paneli

     for (int i = 0; i < MdiParent.linie; i++)
            {   //------------------------------------------------------------------inicjalizacja paneli
                int im = i - 1;
               
                this.panel[i] = new Panel();
                this.Controls.Add(this.panel[i]);
                this.panel[i].BackColor = System.Drawing.Color.WhiteSmoke;
                this.panel[i].BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
                if (i > 0) { this.panel[i].Location = new System.Drawing.Point(60, panel[im].Location.Y + panel[im].Height); }
                else { this.panel[i].Location = new System.Drawing.Point(60, 10); }
                // this.panel[i].Name = "panel" + i;
                this.panel[i].Size = new System.Drawing.Size((6 * MdiParent.szerc)+2, (6 * MdiParent.wl[i])+2);
                this.panel[i].TabIndex =  i;
                this.panel[i].Visible = true;
                this.panel[i].MouseMove += new System.Windows.Forms.MouseEventHandler(this.Mysz);
                this.panel[i].Paint += new System.Windows.Forms.PaintEventHandler(this.Paintp);
                MdiParent.npanel = panel[i];
}

chialbym miec event Paintp taki aby odswiezal pojedynczy panel a nie wszystkie
wiec albo w tej petli przypisac do kazdego painta osobny event (ale nie da sie dodac indeksu do Paintp, a tablica moze miec 1024 elementy wiec musial bym recznie)
lub w funkcji odswiezajacej jakos wykryc ktory to akurat sie onpaintuje

0

Nie jestem pewien czy zrozumialem.

Dodaj sobie w petli event do panelu. Event obslugiwac bedzie owszem jedna metoda, ale co z tego? Kazdy event ma (object sender, EventArgs e), czyli jesli chcesz sie dowiedziec, ktory panel wywolal event to uzyj obiektu sender (po zrzutowaniu uprzednio oczywiscie), a jak jakichs szczegolow o zdarzeniu to obiektu typu EventArgs. To wystarcza do wszystkiego. Jesli nie o to chodzilo to sprecyzuj co potrzebujesz wiedziec w srodku eventu.

pozdrawiam
johny

0

Tak szukam sposobu odczytania ktory to panel sie rysuje jak to z sendera wydobyc ??????

0
Prim0 napisał(a)

Tak szukam sposobu odczytania ktory to panel sie rysuje jak to z sendera wydobyc ??????

W panelu o ile pamietam jest chociazby skladowa Tag, do ktorej mozesz przypisac cokolwiek. Przypisz wiec sobie tam numer i odczytuj go w evencie. TO jestli chodzi o 'ktory', a jesli po prostu chcesz miec ten panel, ktory wywolal zdarzenie, to wlasnie sender nim jest :P

pozdrawiam
johny

0

ja akurat zapisuje sobie index w TabIndex ale to nie ma znaczenia przeciez nie odczytam sobie tego tak sender.Tag albo sender.TabIndex

i jeszcze jedno pytanko bo byc moze nie bede musial tego odswiezac
czy jest jakis komponont ktory po narysowaniu czegos tam metoda grafics.drawcostam()
i zaslonieciu go grafika nie zniknie???

0
Prim0 napisał(a)

ja akurat zapisuje sobie index w TabIndex ale to nie ma znaczenia przeciez nie odczytam sobie tego tak sender.Tag albo sender.TabIndex

i jeszcze jedno pytanko bo byc moze nie bede musial tego odswiezac
czy jest jakis komponont ktory po narysowaniu czegos tam metoda grafics.drawcostam()
i zaslonieciu go grafika nie zniknie???

Tak nie odczytasz, ale ((Panel)sender).Tag jak najbardziej.

Tego drugiego nie skumalem - jak ma nie zniknac jak go zaslaniasz? Co to znaczy 'nie zniknac' w takim razie?

pozdrawiam
johny

0

z tym znikaniem to jest tak ze zaslonie jakims innym oknem lub zpuszcze do paska
i po kolejnym on paincie (jasli nie wrzuce tam rysowania od nowa ) na komponencie nic juz nie ma i musze to rysowac przy kazdym evencie Paint

0
Prim0 napisał(a)

z tym znikaniem to jest tak ze zaslonie jakims innym oknem lub zpuszcze do paska
i po kolejnym on paincie (jasli nie wrzuce tam rysowania od nowa ) na komponencie nic juz nie ma i musze to rysowac przy kazdym evencie Paint

No ale to chyba normalne, nie? Zdarzenie OnPaint wywolywane jest zawsze, kiedy komponent ma byc przerysowany, co oznacza, ze w obsludze tego zdarzenia ma byc napisane jak sie ma zachowac w momencie przerysowywania. O to pytasz?

pozdrawiam
johny

0

Pytam o to czy jest jakis komponent ktory przerysowuje razem ze swoimi wlasciwosciami to co na nim narysowalem (imagebox odpada)

0
Prim0 napisał(a)

Pytam o to czy jest jakis komponent ktory przerysowuje razem ze swoimi wlasciwosciami to co na nim narysowalem (imagebox odpada)

Hmm... nie znam. Jak nie znajdziesz to moze zrob dziedziczaca z panela, ktora bedzie przerysowywala to co ma w swojej wewnetrznej liscie? Nie wiem co tam rysujesz - piksele, inne komponenty... - wiec trudno powiedziec.

pozdrawiam
johny

0

rysuje malutkie kwadraciki (z bitmap ) jest ich sporo bo do 512 na 256 jest to widok wyswitlacza

0
Prim0 napisał(a)

rysuje malutkie kwadraciki (z bitmap ) jest ich sporo bo do 512 na 256 jest to widok wyswitlacza

No to tak chyba bedzie najlatwiej. Robisz sobie liste w dziedziczacej, do ktorej dodajesz te kwadraciki i w OnPaint rysujesz kazdy po kolei w petelce. Nic trudnego a dzialac bedzie.

pozdrawiam
johny

0

Dzieki

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