用程序创建一个文本框并引用它

本文关键字:文本 引用 一个 创建 程序 | 更新日期: 2023-09-27 17:57:59

我有一个多功能应用程序,所以我用for循环函数创建了一个文本框。

TextBox logtextbox = new TextBox();
logtextbox.Name = "textBox1_" + stringval[0]; //string.Format("logThread{0}", i);

我想在线程中的for循环函数之外使用这个文本框。线程已经有了stringval值。我需要知道一种引用它的方法,这样我就可以向它添加文本。

用程序创建一个文本框并引用它

你有这样的东西吗?

for(int i = 0; i<10; i++)
{
    TextBox logtextbox = new TextBox();
    logtextbox.Name = "textBox1_" + stringval[0];
}

将创建的TextBox存储在集合中。

List<TextBox> CreatedTextBoxList = new List<TextBox>();
for(int i = 0; i<10; i++)
{
    TextBox logtextbox = new TextBox();
    logtextbox.Name = "textBox1_" + stringval[0];
    CreatedTextBoxList.Add(logtextbox);            
}

然后你可以循环通过CreatedTextBoxList

foreach(TextBox tb in CreatedTextBoxList)
{
    //do something with tb
}

或者使用Linq获取特定的TextBox。

TextBox tb=CreatedTextBoxList.Where(x => x.Name=="NAMEOFTEXTBOXHERE").FirstOrDefault();
tb.Text="Hello, world!";
for(int i = 0; i<10; i++)
{
TextBox logtextbox = new TextBox();
logtextbox.Name = "textBox1_" + stringval[0];
this.Controls.Add(logtextbox);
}
TextBox mytextbox = ((TextBox) this.Controls.Find("logtextbox",true)[0]); 
EDIT
mytextbox.text = "blah";

类似的东西?

System.Web.UI.WebControls.TextBox txtBasicTextBox = new System.Web.UI.WebControls.TextBox();
 txtBasicTextBox.ID = "txtBasicTextBox";

System.Web.UI.WebControls.TextBox txtBasicTextBox = (System.Web.UI.WebControls.TextBox)form1.FindControl("txtBasicTextBox");

我假设这是WinForms

var stringval = new List<string>{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
for (int i = 0; i < 10; i++)
{
    var textBox = new TextBox();
    textBox.Name = "textBox1_" + stringval[i];
    textBox.Text = "YOUR OLD VALUE";
    Controls.Add(textBox);
}
var searchTextBox = Controls["textBox1_" + stringval[1]] as TextBox;
if (searchTextBox != null)
{
    searchTextBox.Text = "YOUR NEW VALUE";
}