1

我正在使用 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”类型的异常。

4

2 回答 2

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];
 }
于 2012-12-10T16:56:04.617 回答
0

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

页:

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

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

...

代码背后:

公共无效 setText(对象发送者,System.EventArgs e){

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

}

希望这可以帮助!

于 2012-12-10T17:21:33.940 回答