Jak wywołać zdarzenie w usercontrol i złapać je na stronie głównej?
Mam UserControl
i muszę powiadomić Stronę nadrzędną, że Przycisk w UserControl
został kliknięty. Jak wywołać wydarzenie w UserControl
i złapać je na stronie głównej? Próbowałem użyć static
, i wielu zasugerowało mi, aby wybrać się na wydarzenia!
3 answers
Sprawdź Zdarzenie Bubbling -- http://msdn.microsoft.com/en-us/library/aa719644%28vs.71%29.aspx
Edycja, aby dodać szybki przykład: (i dodatkowa Edycja, aby poprawić formatowanie)
Kontrola Użytkownika
public event EventHandler StatusUpdated;
private void FunctionThatRaisesEvent()
{
//Null check makes sure the main page is attached to the event
if (this.StatusUpdated != null)
this.StatusUpdated(this, new EventArgs());
}
Strona Główna / Formularz
public void MyApp()
{
//USERCONTROL = your control with the StatusUpdated event
this.USERCONTROL.StatusUpdated += new EventHandler(MyEventHandlerFunction_StatusUpdated);
}
public void MyEventHandlerFunction_StatusUpdated(object sender, EventArgs e)
{
//your code here
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-11 11:23:52
Po prostu dodaj wydarzenie do swojej kontroli:
public event EventHandler SomethingHappened;
I podnieść go, gdy chcesz powiadomić rodzica:
if(SomethingHappened != null) SomethingHappened(this, new EventArgs);
Jeśli potrzebujesz niestandardowych EventArgs spróbuj EventHandler<T>
zamiast T
być typem pochodzącym z EventArgs
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 19:56:51
Lub jeśli szukasz bardziej odsprzęgniętego rozwiązania, możesz użyć modelu wydawcy / Abonenta messenger, takiego jak MVVM Light Messenger tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 20:05:31