1

当我单击一个按钮时,我想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 中检索数据的代码

4

2 回答 2

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;
}

或者,如果您需要经常查找实例,请将其缓存在私有阵列中。

该例程假定它Textbox在索引 0 中得到一个。您当然应该检查nulland typeof

于 2012-10-21T10:42:58.347 回答
0

根据您的问题,您可以使用以下内容:

string val = string.Empty;
foreach (Control cnt in this.Controls)
{
       if(cnt is TextBox && cnt.Name.Contains("textname"))
            val = ((TextBox)cnt).Text;
}

TextBox虽然当您将它们添加到表单时,我看不到您在哪里创建新实例。

于 2012-10-21T10:46:35.340 回答