【问题标题】:get value from the dynamic create textbox从动态创建文本框中获取值
【发布时间】:2025-12-03 08:50:01
【问题描述】:

我是asp.net 的新手。我想知道如何获得从 C# 动态创建的文本框的值。

这段代码是我从页面加载事件创建文本框的方式...

for( int i =0; i<30; i++){                
                TextBox txt = new TextBox();
                txt.Text = "ASDASDASD";
                txt.ID = "txt - " + i.ToString(); 
                data.Controls.Add(txt);
    }

我想知道如何在 button_click 事件中获取文本框的值。我试过 string test = "txt - " + i.ToString();但我无法得到它。

感谢您的帮助。

【问题讨论】:

  • 为什么是i.ToString() 而不是txt.ToString()
  • 我是什么? txt.Text 应该给你价值。
  • @Cyral 因为我打算在 for 循环中进行。例如,我有 30 个文本框要从后面的代码中创建。
  • 创建文本框数组并使用 i 访问它。

标签: c# dynamic


【解决方案1】:

创建一个数组或文本框列表:

private TextBox[] textBoxes = new TextBox[30];

并为每个位置分配一个新的文本框:

for(int i =0; i<30; i++){                
      TextBox txt = new TextBox();
      txt.Text = "ASDASDASD";
      txt.ID = "txt - " + i.ToString(); 
      textBoxes[i] = txt;
      data.Controls.Add(txt);
}

要获取任何文本框的值,请执行以下操作:

string value = textBoxes[i].Text;

【讨论】:

  • 但是文本框数组可以在另一个函数中使用它吗?我的意思是在一个cs文件中。
  • 把它放在你的函数之外。
  • 它抛出我对象引用未设置为对象的实例。那里的字符串值。
  • 你之前有没有初始化文本框?
  • 我按照您在此处发布的内容添加字符串 valuew = textBoxes[5].Text; TextBox2.Text = valuew;到我的 button_Click。当我单击时,它会向我抛出错误 d
【解决方案2】:

试试这个。

String textvalue = String.Empty;
for(int i=0;i<= data.controls.count-1;i++)
{    
 //Specify the Index if u have 
  if(index == i)
     {
          Textbox txt = data.controls[i] as Textbox;
          textvalue  = txt.text;
          return;
     }
}

【讨论】:

  • 如果用户在data.controls 列表中添加的控件不仅仅是那些文本框,这不是一个有效的解决方案。 (此外,根本不需要遍历所有控件)