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.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

// 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!