Feedback

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

Veröffentlicht von am 6/5/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.
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 8/15/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!