Moja aplikacja formularzy okiennych C# generuje listę CheckBox i PictureBox (w parze) w czasie wykonywania. Chcę, aby po kliknięciu PictureBox (tj. zdarzenia MouseClick) odpowiednie pole wyboru było zaznaczone/odznaczone. Jak mam się do tego zabrać?

3
Zekareisoujin 15 lipiec 2011, 13:15

2 odpowiedzi

Najlepsza odpowiedź

Wolałbym przechowywać wskaźnik do odpowiedniego pola wyboru we właściwości Tag PictureBox. Następnie możesz go użyć w obsłudze zdarzeń kliknięcia PictureBox:

((sender as PictureBox).Tag as CheckBox).Checked = !((sender as PictureBox).Tag as CheckBox);

Nie zapomnij sprawdzić Tag dla null

1
Anton Semenov 15 lipiec 2011, 13:20

Jeśli generujesz kontrolki w locie, wolałbym zbudować skojarzony słownik do przechowywania par, niż używać tagu.

Dictionary<PictureBox, CheckBox> association = new Dictionary<PictureBox, CheckBox>();

// ---------------------------------------
// then, in your generation code

PictureBox pb = // init
CheckBox cb = // init

// whatever

association.Add(pb, cb);

// ---------------------------------------    
// then, in your click handler for picturebox

PictureBox pb = (PictureBox)sender;
CheckBox cb = association[pb];

cb.Checked = !cb.Checked;
0
Shibumi 15 lipiec 2011, 17:14