2013-04-06 37 views
0

我有这个代码,它为我动态地创建一些文本字段。 k取自用户btw。如何使用动态创建的文本字段的文本属性?

 for (int i = 0; i < k; i++) 
     { 
      TextBox t1 = new TextBox(); 
      t1.Parent = groupBox2; 
      t1.Left = textBox2.Left; 
      t1.Top = textBox2.Top + (i + 1) * 40; 
      t1.Name = "text" + (i + 1); 
      t1.Enabled = true; 
      groupBox2.Controls.Add(t1); 
     } 

我想要做的是,这个创造阶段完成后,当用户按下groupbox2的“确定”按钮,我想借此创建文本框的文本属性,但到目前为止,我不知道这怎么能做到,因为我给了textfields一个名字,我试过了,但是没有成功。

private void button3_Click(object sender, EventArgs e) 
    { 
     node1.name = textBox2.Text; 

     for (int i = 0; i < k; i++) 
     { 
      node1.array[i] = Convert.ToInt32("text"+(i+1).Text); 
     } 
    } 

任何帮助将很好,谢谢。

回答

1

遍历groupBox1你的文本框,并得到他们的名字,试试这个:

List<string> TextBoxesName=new List<string>(); 
      foreach (Control item in groupBox1.Controls) 
      { 
       if (item is TextBox) 
       { 
        TextBoxesName.Add((item as TextBox).Text); 
       } 
      } 
0

设置为动态texboxes ID比你可以做groupBox2.FindControl("dynamic_texbox_id")让你的文本框

0

最简单的办法是把你的列表框某种

List<ListBox> listboxes = new List<ListBox>(); 

for (...) 
{ 
... 
listboxes.add(listbox); 

} 

的话可以参考后面的集合他们每当你想要

或者因为你将它们添加到组框,为什么不通过收集去了?

2

试试这个方法:

private void button3_Click(object sender, EventArgs e) 
{ 
    node1.name = textBox2.Text; 
    for (int i = 0; i < k; i++) 
    { 
     TextBox txtBox = (TextBox)groupBox2.FindControl("text" + (i + 1)); 
     if (txtBox != null) 
     { 
      node1.array[i] = txtBox.Text; 
     } 
    } 
}