动态文本框创建形式

时间:2012-10-21 10:30:54

标签: c# winforms textbox

我想在表单中动态创建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中检索数据的代码

2 个答案:

答案 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。您当然应该检查nulltypeof

答案 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}}的新实例。