Z osobistego doświadczenia napisałem kontrolkę użytkownika dziedziczącą zestaw Windows ComboBox. Musiałem napisać kod, aby zastąpić zdarzenie OnEnter
i miałem oświadczenie nie mówiąc
If Me.Focused Then ... Else ...
Jednak niestety zwrócił nieoczekiwany rezultat. Jeśli zadzwoniłem pod numer MyCustomerComboControl.Select
(w obu wczytywanych, pokazanych lub aktywowanych zdarzeniach), nazwałem metodę OnEnter
, ale nie udało mi się zarejestrować jej fokusa (tzn. Focused było Fałszywe), ale jeśli zadzwoniłem pod Focus, zadziałało. Ponadto zadziałało Select
, jeśli formularz był otwarty, to znaczy, gdy wybrałem inną kontrolę, a następnie ponownie wybrano pierwotną kontrolę, wszystko było w porządku. Tak więc w innych okolicznościach, poza moim scenariuszem, użyj Select
, ponieważ tak jest powyżej.
Nie sądzę, że to wystarczająco dobra odpowiedź. Przeczytałem to i rozumiem. Napisałem niestandardową kontrolę. Nie wiem, czy właściwe jest dla mnie użycie opcji Select vs Focus w moim sterowaniu niestandardowym. Czy to zawsze? Czy jest jakiś zestaw kryteriów? jakie są implikacje jednej z drugiej, zarówno rzeczywistej, jak i semantycznej? –
Podejrzewam, że większość ludzi będzie czytać MSDN przed wpisaniem tego pytania w Google. Proste powtórzenie tego tutaj verbatum nie jest zbyt pomocne. –