从动态创建的TextBox中获取文本

时间:2013-05-18 19:47:02

标签: c# .net winforms dynamic

点击时我有一个按钮动态创建文本框:

        for (int i = 0; i < length; i++)
        {
         Name.Add(new TextBox());
         System.Drawing.Point locate = new System.Drawing.Point(137, 158 + i * 25);
         (Name[i] as TextBox).Location = locate;
         (Name[i] as TextBox).Size = new System.Drawing.Size(156, 20);
         StartTab.Controls.Add(Name[i] as TextBox);
         }

我想在Name [i]中输入文本转换为字符串,然后将其设置为标签

2 个答案:

答案 0 :(得分:3)

您可以使用Control.ControlCollection.Find

<强>更新:

TextBox txtName =  (TextBox)this.Controls.Find("txtNameOfTextbox", true)[0];

if (txtName != null)
{
    return txtName.Text;
}

答案 1 :(得分:0)

你没有说Name是什么类型,它看起来像某种类型的列表。尝试使用List<TextBox>,您可以直接访问TextBox属性。像这样的东西。我也不确定StartTab是什么控件,所以我只使用Panel来获取此测试代码。 (您还应该知道Name屏蔽了表单的Name属性,这就是我将您的列表更改为name的原因

public partial class Form1 : Form
{
    List<TextBox> name = new List<TextBox>();
    int length = 5;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < length; i++)
        {
            name.Add(new TextBox() { Location = new System.Drawing.Point(137, 158 + i * 25), 
                                     Size = new System.Drawing.Size(156, 20) });
            StartTab.Controls.Add(name[i]);
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < length; i++)
        {
            StartTab.Controls.Add(new Label() {Location = new System.Drawing.Point(name[i].Location.X + name[i].Width + 20,
                                               name[i].Location.Y), 
                                               Text = name[i].Text, 
                                               AutoSize = true });
        }
    }
}