Feedback

C# - Fokus setzen innerhalb eines EnabledChanged-Ereignisses

Veröffentlicht von am 03.03.2015
(0 Bewertungen)
Aufgabe
Wenn der Status eines Steuerelemtens von "Disabled" nach "Enabled" wechselt, soll es automatisch den Focus bekommen.
Der Lösungsansatz ist klar: das Ereignis "EnabledChanged" nutzen und mit "sender.Focus();" den Focus setzen.
Das Problem
Es funktioniert schlicht nicht (zuverlässig). Das Ereignis wird bereits ausgelöst, während sich der Status noch ändert. Der Abfrage von "Enabled" innerhalb des Ereignisses zeigt dabei lediglich den nächsten Zustand an, nicht aber den aktuell Erreichten.
Die Folge ist, das "Focus()" auf ein nicht aktives Steuerelement angewandt wird. Damit rutscht der Fokus weg.
Lösung
Die Aktivierung des Steuerelementes über das Formular in dem es liegt.
Anwendung
SetFocusedControl (MeinControl);
MeinControl.SetFocusedControl ();
GFU-Schulungen  [Anzeige]

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

// zum Einbinden in eine statische Klasse
// sonst das 'this' entfernen

static public void SetFocusedControl (this Control Ctrl) {
	((Form) Ctrl.TopLevelControl).ActiveControl = Ctrl;
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!