Mam aplikację WinForm z kilkoma elementami sterującymi wprowadzania w formularzu. W procedurze obsługi zdarzenia sprawdzania poprawności (Validating
lub Validated
), muszę określić, którą kontrolę aktywować w następnej kolejności, na podstawie zweryfikowanej wartości.Jak ustawić fokus na formant po sprawdzeniu poprawności w .NET
w dokumentacji Microsoftu imprezy Validating, stwierdza:
Uwaga
Nie próbować ustawić ostrość od wewnątrz Enter GotFocus, Odchodzenie, LostFocus, zatwierdzania lub Zatwierdzone obsługi zdarzeń. Może to spowodować, że aplikacja lub system operacyjny przestanie odpowiadać. Aby uzyskać więcej informacji, zobacz temat WM_KILLFOCUS w sekcji "Referencje klawiatury" i sekcję "Zakłócenia wiadomości" w sekcji "Informacje o wiadomościach i kolejkach wiadomości" w bibliotece MSDN pod adresem http: // msdn.microsoft.com/library .
Istnieje właściwość ActiveControl
dla klasy Form, która umożliwia ustawienie kontroli, która ma stać się aktywna i nie są wymieniane żadne ograniczenia. Nie znalazłem żadnego innego rozwiązania po kilkugodzinnym wyszukiwaniu w Internecie.
Czy ustawienie wartości ActiveControl
(zamiast Focus
) z mojej funkcji Walidowane zdarzenie jest bezpiecznym sposobem na aktywację żądanej kontrolki? Jeśli nie, czy są jakieś rozwiązania?
Ponieważ usługa .NET Compact Framework nie ma właściwości ActiveControl
, czy ktoś może zaproponować rozwiązanie?
Wow, sprytna odpowiedź! Sądziłem, że delegowana metoda musi wywołać EndInvoke(), ale to było zanim poznałem różnicę między Delegate.BeginInvoke() i Control.BeginInvoke(). Zobacz \t [.net - Jaka jest różnica między Invoke() i BeginInvoke] [1] [1] http://stackoverflow.com/questions/229554/whats-the-difference-between-invoke-and-begininvoke – Suncat2000