我有一个dt表,想把其中第一列的所有记录值(文本的)在winform 上动态生成文本框控件,并把这些值分别放在动态生成的各个文本框里。通过下面的循环,本功能已经实现。但是之后如果在winform上修改了某个框里的值,怎么取这个值呢?比如我在循环结束后写string s=this.tb2.Text, C#是不认的,因为在代码里找不到“tb2”这个名字。怎么操作这些连名字都是动态生成的控件呢?
           for (int rr=0; rr<dt.Rows.Count; rr++)
             {
                 TextBox tb = new TextBox();
                tb.Text =dt.Rows[rr][0].ToString();
                tb.Location = new System.Drawing.Point(20,20+rr*30);
                tb.Size = new System.Drawing.Size(30, 20);
                tb.Name = "tb" + rr.ToString();
                this.groupBox1.Controls.Add(tb);             }

解决方案 »

  1.   

    老大,能不能说详细点?我试过TextBox[] tb创建数组,但是运行的时候不认tb[rr]。到底怎么个弄法?一定结分的!
      

  2.   

    温柔一刀说的方法正确,不过太简单了,不知道怎么做。经过大量查阅资料,总算自己弄出了算法,看样子这20分只能给自己了。
              TextBox[] tb = new TextBox[dt4.Rows.Count];
                for (int rr=0; rr<dt4.Rows.Count; rr++)
                 {
                     tb[rr] = new TextBox();
                     tb[rr].Text =dt4.Rows[rr][0].ToString();
                     tb[rr].Location = new System.Drawing.Point(20,20+rr*30);
                     tb[rr].Size = new System.Drawing.Size(30, 20);
                     tb[rr].Name = "tb" + rr.ToString();
                     this.groupBox1.Controls.Add(tb[rr]); 
                 }
      

  3.   

    不用数组也可以,你动态的定义textbox的id,然后利用findcontrol(id)来就好了