如何动态地将文本插入文本框?

时间:2012-12-10 16:49:51

标签: c# .net

我正在使用C#中的项目,我需要将文本插入到超过250的文本字段中, 我将数据存储在一个字符串数组中,现在我必须按顺序将数据从数组插入到这250个文本框中,如

textbox1.Text=StringArray[1];
textbox2.Text=StringArray[2];
       .               .
       .               .
       .               .
textbox250.Text=StringArray[250];

我谷歌没有积极的结果, 我做了代码来清除所有文本框中的文本,即

Action<Control.ControlCollection> func = null;
func = (controls) =>
{
    foreach (Control control in controls)
       if (control is TextBox)
          (control as TextBox).Clear();
       else
          func(control.Controls);
 };
 func(Controls);

我试图插入这样的文字

 Action<Control.ControlCollection> func = null;
 int i=0;
 func = (controls) =>
 {
     foreach (Control control in controls)
     {
         if (control is TextBox)
            (control as TextBox).Text = result_set[i++].ToString();
         else
            func(control.Controls);

     }
 };

 func(Controls);

但是有一个'System.IndexOutOfRangeException'类型的例外。

2 个答案:

答案 0 :(得分:1)

错误是因为您访问阵列外部的成员。可能是因为您在页面上有其他文本框,这些文本框由循环找到,然后您的数组索引超出范围。也许你可以这样做:

 for(int i = 1; i <= StringArray.Length; i++)
 {
     // I don't know which technology you use, it might be a different method to find
     Control control = controlCollection.FindByName("Textbox" + i.ToString(); 
     if (control is TextBox)
        (control as TextBox).Text = StringArray[i];
 }

答案 1 :(得分:0)

您可以使用数组的索引向页面上的每个文本框添加属性“index”,并将函数附加到事件“OnInit”以插入文本。一个例子:

PAGE:

[asp:TextBox ID="TextBox1" runat="server" OnInit="setText" index="1"][/asp:TextBox]

[asp:TextBox ID="TextBox2" runat="server" OnInit="setText" index="2"][/asp:TextBox]

...

背后的代码:

public void setText(object sender,System.EventArgs e){

    TextBox tbx;
    tbx = sender;
    tbx.Text = StringArray[sender.attributes["index"]];

}

希望这有帮助!