如何从动态TextBox中获取值?

时间:2011-02-08 05:31:33

标签: c# winforms

你好 我真的需要你的帮助,这是我在大学的最后一个项目 我必须制作文本框矩阵,用户可以选择它的大小 但我不知道我创建它后如何参考文本框,所以我可以做计算 以及如何更改类型。 这就是我在运行时获取文本框的代码 我希望你帮助我 C#代码

private void button1_Click(object sender, EventArgs e)
    {

        //TextBox tb = new TextBox();

        int y = 10;
         row = Convert.ToInt32(textBox1.Text);
        int col = row;
        //string []a = new string[row];
        int count = 0;
        int sum;
        for (int i = 0; i < row; i++)
        {
            int x = 10;

            for (int j = 0; j < col; j++)
            {
                 t = new TextBox();
                t.Size = new Size(50, 20);
                t.Name = "tb" + count;
                count++;
                t.Location = new Point(x, y);
                t.Visible = true;


                //t.GetType();
                //a[row] = t.Text;

                Controls.Add(t);
                x = x + 70;
                //t.Text =Convert.ToDecimal(t.Text);
                //Convert.ToDecimal(t.Text);
                if (t.Name == "tb1")
                    t.Text = "10";
            }
            y = y + 25;
        } 

3 个答案:

答案 0 :(得分:1)

保留对每个TextBox的引用(例如,您可以将其存储在二维数组中):

// Defined at the Form level
private TextBox[,] textBoxes = new TextBox[10, 10];

...

// When creating the TextBox
t = new TextBox();

...

// Store the reference
textBoxes[i, j] = t;

...

稍后您可以获得值:

var text = textBoxes[row, col].Text;

答案 1 :(得分:1)

为新插入的文本框添加名称:

t.Name = "dynamicTextBox" + i.ToString();

之后,您只需通过其名称访问它:

this.Controls["dynamicTextBox0"].Text = "my text";

这可以防止需要额外的数组来保存您动态创建的文本框。

答案 2 :(得分:0)

试试这个,

TextBox t =(TextBox)Controls [“tb”+ count.ToString()]

contorl的name属性成为控件集合中的键。

另外你可以检查Controls.ContainsKey(“tb”+ count.ToString())是否存在