Wie verweise ich nach Namen auf ein Windows-Formularsteuerelement (C # / VB)

Angenommen, ich habe ein Label-Steuerelement in einem Windows-Formular mit dem Namen "Benutzername". Wie kann ich programmgesteuert mit dem Markennamen auf dieses Etikett verweisen?

Zum Beispiel kann ich tun:

For each ctrl as Control in TabPage.Controls
If ctrl.Name = "UserName" Then
' Do something
End If
Next

Dies scheint ziemlich ineffizient zu sein. Ich würde gerne etwas machen wie:

TabPage.Controls("UserName").Text = "Something"

Ich habe ein bisschen gegoogelt, aber keine zufriedenstellende Antwort gefunden. Die meisten vorgeschlagenen Schleifen, einige sagten, .NET 2005 unterstütze kein direktes Refenece unter Verwendung von String-Namen, und FindControl-Methode war nur asp.net ...

BEARBEITEN

Vielen Dank für die bisherige Antwort. Hier ist ein bisschen mehr Detail.

Ich habe ein Fensterformular mit drei Registerkarten, die sich in Design und Funktion sehr ähneln, d. H. Dieselben Dropdown-Menüs, Beschriftungen, die auf ähnliche Weise auf Ereignisse reagieren usw.

Anstatt Code für jedes Ereignis pro Registerkarte zu schreiben, habe ich eine Klasse erstellt, die Ereignisse usw. pro Registerkarte steuert.

Beispielsweise gibt es auf jeder Registerkarte eine Bezeichnung mit dem Namen "RecordCounter", die einfach die Anzahl der Zeilen in der Datengitteransicht anzeigt, wenn sie durch Auswahl einer Variablen in einem Dropdown-Menü ausgefüllt wird.

Ich möchte also in der Lage sein, nach Auswahl einer Variablen im Dropdown-Menü die Datengitteransicht mit Daten zu füllen und dann einfach die Anzahl der Zeilen in einem Etikett anzuzeigen ("RecordCounter").

Dies ist genau der gleiche Vorgang auf jeder Registerkarte. Ich übergebe also die Registerkarte an die Klasse und möchte dann in der Lage sein, auf den "RecordCounter" zu verweisen und ihn dann zu aktualisieren.

In meiner Klasse habe ich die ActivePage-Eigenschaft auf die TabPage festgelegt, die der Benutzer ausgewählt hat, und möchte dann in der Lage sein, Folgendes zu tun:

ActivePage.RecordCounter.Text = GetNumberOfRows()

Antworten auf die Frage(6)

Ihre Antwort auf die Frage