C#从另一个方法读取动态创建的文本框的文本

时间:2013-01-07 16:11:07

标签: c#-4.0

如果我像这样动态创建了一个文本框:

private void Form1_Load(object sender, EventArgs e)
{
   TextBox tb=new TextBox();
   ...
   this.Controls.Add(tb);
}

如果我的表单上有一个按钮,我想从按钮单击事件处理程序中读取文本框的文本

private void button1_Click(object sender, EventArgs e)
{
 if(**tb.text**=="something") do something;
}

问题是我无法在按钮处理程序中找到文本框控件。

提前谢谢

4 个答案:

答案 0 :(得分:1)

你必须从方法中声明文本框,它必须是全局的。然后你可以到达文本框对象

TextBox tb;
private void Form1_Load(object sender, EventArgs e)
{
  tb=new TextBox();
  ...
  this.Controls.Add(tb);
}

答案 1 :(得分:0)

TextBox声明为您的Form班级私人会员。

答案 2 :(得分:0)

您可以迭代Controls可枚举对象的集合,例如TabControl,假设这是一个Windows窗体。这里有一些来自我正在研究的项目,适用于TextBox

foreach (TabPage t in tcTabs.TabPages)
{
    foreach (Control c in t.Controls)
    {
        MessageBox.Show(c.Name);  // Just shows the control's name.

        if (c is TextBox)    // Is this a textbox?
        {
            if (c.Name == "txtOne")  // Does it have a particular name?
            {
                TextBox tb = (TextBox) c;  // Cast the Control as a TextBox

                tb.Text = "test";  // Then you can access the TextBox control's properties
            }
        }
    }
}

答案 3 :(得分:0)

private TextBox tb = new TextBox();
private void Form1_Load(object sender, EventArgs e)
{
  this.Controls.Add(tb);
}