ArrayList i eventy obiektów w nim zawartych

0

Mam ArrayList a w nim 9 obiektów PictureBox. Chcę teraz żeby te obrazki które są wyświetlane na Formie reagowały na kliknięcia. Jak uzyskać dostęp do eventów? normalnie skorzystałbym z odpowiedniej zakładki ale obiekty zostały utworzone w ten sposób:

 

ArrayList boxList = new ArrayList();
for (int i = 0; i < 9; i++)
            {
                boxList.Add(new PictureBoxOX());
                ((PictureBoxOX)boxList[i]).Width = imgHeight;
                ((PictureBoxOX)boxList[i]).Height = imgWidth;
                ((PictureBoxOX)boxList[i]).Location = new Point(tmpX, tmpY);
                ((PictureBoxOX)boxList[i]).Image = Bitmap.FromFile(OXDefines.BlankIMG);
                ((PictureBoxOX)boxList[i]).Parent = boardBox;
                if (((i + 1) % 3) == 0)
                {
                    tmpX = 10;
                    tmpY += imgHeight + space;
                }
                else
                {
                    tmpX += imgWidth + space;
                }
            }
1

Po pierwsze, czemu korzystasz z ArrayList i cały czas rzutujesz? Nie lepiej wybrać List<PictureBox>?

A co do głównego tematu, to w tej pętli mógłbyś dopisać jeszcze

boxList[i].Click += picture_Click;    // albo najpierw rzutuj 'boxList' jak w Twoim kodzie, zależy czy dalej korzystasz z ArrayList czy List<>

I jeśli środowisko Ci nie wygeneruje metody, to musisz ją sam dopisać gdzieś w ciele klasy:

private void picture_Click(object sender, EventArgs e)
{
// i teraz po kliknięciu na dowolnego box'a wykonuje się ta metoda

// w 'sender' jest referencja na box'a który kliknąłeś, więc wystarczy zrzutować na PictureBox
// i dalej możesz coś z tym robić.
}
0

Masz racje z ArrayList nie przemyślałem tego. Poza tym rozwiązanie przez Ciebie podane działa świetnie :) to jest to czego potrzebowałem. Ale mam jeszcze jedno pytanko, ta konstrukcja:

 boxList[i].Click += pictureClick;

Co to jest bo w życiu jeszcze nie używałem? Ma jakąś nazwę? Chętnie bym o tym poczytał.

0

W skrocie dodaje metody do listy metod trzymanych w delegacie/zdarzeniu.
http://msdn.microsoft.com/en-us/library/ms366768.aspx

0

Wielkie dzięki! Pozdro:)

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