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]

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

ASP.NET Core Server- und Client-Programmierung

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

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!