Jeśli mam cię rozumie poprawnie, GameButton usercontrol będzie ognia zdarzenie po kliknięciu na, ale nie wtedy, gdy etykieta jest kliknął - i chcesz oba. Jest tak, ponieważ etykieta (kontrola) znajduje się na wierzchu tła. Dlatego też musisz zarejestrować swoją etykietę również za pomocą zdarzenia kliknięcia. Można to zrobić ręcznie w projektancie lub programowo dla każdej kontrolki na stronie.
Jeśli chcesz zrobić każde urządzenie sterujące w UserControl, umieścić to w przypadku usercontrol za OnLoad i można używać tego samego zdarzenia click dla każdej kontroli:
foreach(Control c in this.Controls){
c.Click += new EventHandler(yourEvent_handler_click);
}
public void yourEvent_handler_click (object sender, EventArgs e){
//whatever you want your event handler to do
}
EDIT: Najlepszym sposobem jest stworzenie kliknij właściwość obsługi zdarzenia click w formancie użytkownika. W ten sposób za każdym razem, gdy dodajesz/usuniesz zdarzenie click do kontroli użytkownika, dodaje/usuwa je automatycznie do wszystkich kontrolek w ramach kontroli użytkownika.
public new event EventHandler Click {
add {
base.Click += value;
foreach (Control control in Controls) {
control.Click += value;
}
}
remove {
base.Click -= value;
foreach (Control control in Controls) {
control.Click -= value;
}
}
}
Jest to jak na kolejny post:
Nadzieja to pomaga!
ramy UI (WinForm, WPF, Webforms, MVC)? –
przykro, WinForms – Oztaco
Również należy unikać w tym tagów które mają niewiele wspólnego z twoim pytaniem (np. visual-studio) –