我想在表单中动态创建TextBox
并检索其数据,并在单击按钮时将其粘贴到同一表单中的另一个TextBox中。
我使用以下代码动态创建texbox:
public int c=0;
private void button1_Click(object sender, EventArgs e)
{
string n = c.ToString();
txtRun.Name = "textname" + n;
txtRun.Location = new System.Drawing.Point(10, 20 + (10 * c));
txtRun.Size = new System.Drawing.Size(200, 25);
this.Controls.Add(txtRun);
}
我需要从此TextBox中检索数据的代码
答案 0 :(得分:1)
您没有在日常工作中创建Textbox
实例:
TextBox txtRun = new TextBox();
//...
string n = c.ToString();
txtRun.Name = "textname" + n;
txtRun.Location = new System.Drawing.Point(10, 20 + (10 * c));
txtRun.Size = new System.Drawing.Size(200, 25);
this.Controls.Add(txtRun);
当您需要内容时:
string n = c.ToString();
Control[] c = this.Controls.Find("textname" + n, true);
if (c.Length > 0) {
string str = ((TextBox)(c(0))).Text;
}
如果您需要经常查看,请将您的实例缓存在私有数组中。
例程假设它在索引0中得到Textbox
。您当然应该检查null
和typeof
。
答案 1 :(得分:0)
根据您的问题,您可以使用以下内容:
string val = string.Empty;
foreach (Control cnt in this.Controls)
{
if(cnt is TextBox && cnt.Name.Contains("textname"))
val = ((TextBox)cnt).Text;
}
虽然当您将TextBox
添加到表单时,我看不到您在哪里创建{{1}}的新实例。