Como faço para se referir a um controle de formulário do windows pelo nome (C # / VB)

Suponha que eu tenha um controle de rótulo em um formulário do Windows chamado "UserName". Como posso me referir a esse rótulo por meio de programação usando o nome do marcador?

Por exemplo eu posso fazer:

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

Isso parece bastante ineficiente. Eu gostaria de fazer algo como:

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

Eu fiz alguns googling mas não consegui encontrar uma resposta satisfatória. A maioria sugeriu looping, alguns disseram que o .NET 2005 não suporta refenece direto usando o nome da string, e o método FindControl era apenas asp.net ...

EDITAR

Obrigado pela resposta até agora. Aqui está um pouco mais detalhadamente.

Eu tenho uma forma de janelas com três páginas, todas muito semelhantes em design e função, ou seja, mesmos menus suspensos, rótulos, reagir de maneira semelhante a eventos etc.

Em vez de escrever código para cada evento por tabpage, criei uma classe que controla os eventos, etc. por tabpage.

Por exemplo, em cada tabpage há um rótulo chamado "RecordCounter" que simplesmente mostra o número de linhas no datagridview quando é preenchido pela seleção de uma variável em um menu suspenso.

Então, o que eu quero ser capaz de fazer é, após a seleção de uma variável no menu drop-down, o datagridview se preenche com dados, e então eu simplesmente quero exibir o número de linhas em um rótulo ("RecordCounter").

Este é exatamente o mesmo processo em cada tabulação, então o que eu estou fazendo é passar a tabuagem para a classe e então eu quero ser capaz de me referir ao "RecordCounter" e então atualizá-lo.

Na minha classe, defino a propriedade ActivePage como sendo a TabPage que o usuário selecionou e, em seguida, quero poder fazer algo como:

ActivePage.RecordCounter.Text = GetNumberOfRows()

questionAnswers(6)

yourAnswerToTheQuestion