zbyt długi komentarz, zawiera link i kod ... ale to jest komentarz ...
Wiele osób skarżyło się o UserControl nie wypalanie „GotFocus() wydarzenie. Na przykład: UserControl and GotFocus() fyi: LostFocus() zostanie uruchomiony zgodnie z oczekiwaniami, z mojego doświadczenia. W przeszłości w projekcie z wieloma formularzami eksperymentowałem z implementowaniem programów obsługi zdarzeń "Enter" i "Leave" na kontrolerze UserControl na każdym formularzu i stwierdziłem, że "Enter jest wywoływany tylko raz przy ładowaniu formularza, jeden raz.
Najwyraźniej kontrole w UserControl "biorą ostrość" (w pewnym sensie nie mogę tego wytłumaczyć, ale prawdopodobnie jeden z guru SO z WinForms będzie). Być może jest to związane z faktem, że UserControl schodzi z ContainerControl?
eksperymentowałem z pisaniem jeden „GotFocus() Handler:
private void Control_GotFocus(object sender, EventArgs e)
{
Console.WriteLine("Control GotFocus : " + ((sender as Control).Name));
}
a następnie w usercontrol” zdarzenie Load przewodowego się wszystkie kontrolki na UserControl do tej obsługi zdarzeń: co zaobserwowałem, że Kontrola w UserControl przy najniższym TabIndex uruchamiałaby zdarzenie "GotFocus" tuż po uruchomieniu aplikacji i przełączeniu między Formami.
Jedyną rzeczą, o której wspomniałem w tej sytuacji, jest upewnienie się, że właściwość "IsTabStop w UserControl jest ustawiona na" True: to było z Shawn Wildermuth w MS w kontekście pytania związanego z SilverLight, więc nie mam pojęcia, czy to może dotyczyć twojej sprawy.
Inna propozycja, która polegała na napisaniu obsługi zdarzeń MouseDown lub MouseClick dla UserControl, oraz w wywołaniu: this.SetFocus();
doprowadziła mnie donikąd.
Mam nadzieję, że otrzymasz odpowiedź!
To wydawało się wykonywać tę pracę. Nadal będę się z nim bawił, żeby uporządkować zawiłości, o których wspomniałeś. Dzięki! – Sambo
+1 Cieszę się, że mam kolejną wspaniałą odpowiedź od NoBugza. Ciekawy: czy w tym przypadku uważasz, że OP mógłby zrobić lepiej przy użyciu formularza zamiast kontrolki użytkownika? – BillW
@Bill: klasa Form jest również kontrolką kontenera, chociaż nie będzie walczyć w podobny sposób. Moja rada musiałaby polegać na unikaniu niestandardowych praktyk interfejsu użytkownika. Dezorientuje również użytkownika. –