Array
(
)

Selecionar objeto por string

Zerocool
   - 13 mai 2009

Bom, galera, seguinte, estou migrando um sistema meu de VB6 para C#, e estou com um problema em um método, no VB6 eu podia fazer isso

#Código

For i = 1 To 10 Step 1

Textbox(i).Enabled = False

Next


Porem, pelo o que andei pesquisando não existe mais a propriedade Index nos objetos de tela, então onde eu tinha 10 textbox com o mesmo nome apenas com indices diferentes, estou fazendo dessa maneira

textbox_1
textbox_2
textbox_3

e assim por diante, e agora dentro do For como eu faço para desativar todos de uma só vez, pensei em fazer algo do tipo:

#Código
string nm_obj;

for (i=1;i<10;i++)
{
    nm_obj = "textbox_"+i;

    nm_obj.Enabled = false;
}


Entenderam, sei que não funciona dessa maneira, mas tem alguma maneira de mudar propriedades de um objeto pelo nome armazenado em uma string??

Tiagodb
   - 25 mai 2009

Nesse caso o mais simples é acessar os controles da tela através da coleção Controls e procurar pelo Id do TextBox correspondente.

foreach (Control control in this.Controls)
{
if (control.Name.Equals(´textBox1´))
{
TextBox txtTmp = (TextBox)control;
txtTmp.Text = ´texto aqui...´
}
}

Tiagodb
   - 25 mai 2009

Esqueci no anterior, qualquer dúvida entra no blog da assinatura que será somente sobre tecnologias Microsoft.

Rjun
   - 27 mai 2009

Pesquise por REFLECTION.