Finde heraus, wer in einem Lost Focus-Event den Fokus hatte

8

Ist es möglich zu wissen, wer den Fokus in einem verlorenen Fokus hatte?

Compact Framework hat kein ActiveControl , also weiß ich nicht, wie ich sagen kann, wer den Fokus hat.

    
Vaccano 24.05.2010, 18:36
quelle

5 Antworten

6

Dies ist die Lösung, die am Ende funktioniert hat:

%Vor%     
Vaccano 25.05.2010, 14:58
quelle
2

Eine Möglichkeit wäre, die GetFocus API zu interoptieren

%Vor%

Dies gibt Ihnen den Punkt für das Fenster, das aktuell den Fokus hat, Sie können dann rekursiv den Kontrollbaum durchlaufen, um das Steuerelement mit diesem Punkt zu finden.

    
Chris Taylor 24.05.2010 19:32
quelle
1

Die Verwendung der corell.dll sieht nach einer guten Idee aus.

Eine weitere Möglichkeit besteht darin, GotFocus-Event-Handler für alle Steuerelemente in Ihrem Formular zu erstellen. Erstellen Sie dann eine Variable auf Klassenebene, die mit dem Namen des Steuerelements aktualisiert wird, das den aktuellen Fokus hat.

    
dretzlaff17 24.05.2010 20:23
quelle
1

Nein. Zuerst kommt das LostFocus-Event eines Controls, dann kommt das GotFocus-Event des nächsten Controls. Solange Sie nicht wissen, welche Kontrolle der Benutzer im nächsten Moment verwendet, ist dies nicht möglich.
wohingegen, wenn das kompakte Rahmensteuerelement eine TabIndex-Eigenschaft hat, es nur vorhergesagt werden könnte, wenn der Benutzer den Tab-Schlüssel verwendet.

Bearbeiten: OK Sie haben die Lösung gepostet und es funktioniert gut, ich muss zugeben: das einfache "Nein" ist falsch +1

    
OlimilOops 24.05.2010 19:09
quelle
1

Dies ist ein kürzerer Code für die Antwort von Vaccano, mit Linq

%Vor%

Genau das gleiche (auf hoher Ebene, Abstraktion).

    
Marcelo Camargo 11.08.2014 14:59
quelle

Tags und Links