0

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

        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] 中输入的文本转换为字符串,然后将其设置为标签

4

2 回答 2

3

您可以使用Control.ControlCollection.Find

更新:

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

if (txtName != null)
{
    return txtName.Text;
}
于 2013-05-18T19:56:18.943 回答
0

你没有说那Name是什么类型,它看起来像某种列表。尝试使用List<TextBox>这种方式,您可以直接访问TextBox属性。像这样的东西。我也不确定 ControlStartTab是什么,所以我只是使用了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 });
        }
    }
}
于 2013-05-19T00:36:48.913 回答