Hi, I was trying to construct the name of a TextBox through a string. TextBox + index [closed]

-4
    private void btnGravarNovosValores_Click_1(object sender, EventArgs e)
    {
        string descricao;
        string textBoxX;

        int i = 0;
        foreach (Object texto in lstTabelaProdutosPreco.Items)
        {
            descricao = texto.ToString();
            i++;
            textBoxX = ("textBox" + i.ToString());

            //MessageBox.Show(descricao + " " + textBox);

            TabelaAlterarProdutosCalibresValores tabelaAlterarProdutosCalibresValores = new TabelaAlterarProdutosCalibresValores();
            tabelaAlterarProdutosCalibresValores.idTabelaPrecos = Convert.ToInt32(lstNome.SelectedValue.ToString().Substring(0, 3));
            tabelaAlterarProdutosCalibresValores.idProduto = Convert.ToInt32(descricao.ToString().Substring(0, 4));
            tabelaAlterarProdutosCalibresValores.idCalibre = descricao.ToString().Substring(8, 5);
            tabelaAlterarProdutosCalibresValores.precoVenda = double.Parse(textBoxX.ToString().Trim());
            if (tabelaAlterarProdutosCalibresValores.UpDateDefault())
            {
                MessageBox.Show(lstNome.SelectedValue.ToString().Substring(0, 3) + descricao.ToString().Substring(0, 4) + descricao.ToString().Substring(8, 5) + textBoxX);
            }
        }
    }
    
asked by anonymous 01.03.2018 / 12:12

1 answer

3

You want to access multiple TextBox that exists on your Form dynamically within the loop.

For this you will use the Find method:

link

Example:

for (int i =0; i< 10; i++)
{

        Control[] controls = this.Controls.Find("textBox" + i.ToString(), true);
        if (controls.Length > 0)
        {
            TextBox txtBox = controls[0] as TextBox;
            if (txtBox != null)
            {
                tabelaAlterarProdutosCalibresValores.precoVenda = txtBox.Text; 
            }
        }
        else
        {
          //não achou o textbox
        }

 }
    
01.03.2018 / 12:40