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ć?
2 odpowiedzi
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
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;
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.