Feedback

C# - Controls gleichen Typs von einem Container in Winform holen

Veröffentlicht von am 05.06.2009
(3 Bewertungen)
Es gibt einige Möglichkeiten wie Controls gleichen Typs geholt werden können (zB alle TextBoxen). Hierzu sind genügend Snippets vorhanden.

Zufällig bin ich auf eine LINQ-Erweiterung gestossen welche alle Controls gleichen Typs zurückgibt -> IEnumerable.OfType<T>

Im Code habe ich das ganze in eine Extension-Methode für Controls gepackt.

Ob es Sinn macht die Controls so oder klassisch per Schleife zu holen sei dahingestellt. Weiterer Nachteil ist dass nur die Controls des "befragten" Containers zurückgegeben werden. Hier ist klar die rekursive Schleifenvariante im Vorteil.
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

public static class ControlExtension
{
	public static IEnumerable<T> GetControls<T>(this Control container) where T : Control
	{
		return container.Controls.OfType<T>();
	}
}

1 Kommentare zum Snippet

FoidlSpast schrieb am 15.08.2018:
Und wie hilft das?

Der originale Aufruf ist beispielsweise:

Textbox.Controls.OfType<Typ>();


Dein Aufruf ist wie folgt:

Textbox.GetControls<Typ>();


Das Snippet bringt also effektiv nichts.
Das einzige was es tut ist eine Methode bereitstellen, die statt 15 Zeichen nur 11 Zeichen zu schreiben ist.

Und selbst das ist nicht nennenswert.
 

Logge dich ein, um hier zu kommentieren!