2

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

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

4 回答 4

1

您必须在方法之外声明 texbox,它必须是全局的。然后你可以到达文本框对象

TextBox tb;
private void Form1_Load(object sender, EventArgs e)
{
  tb=new TextBox();
  ...
  this.Controls.Add(tb);
}
于 2013-01-07T16:14:09.173 回答
0

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

于 2013-01-07T16:14:34.190 回答
0
private TextBox tb = new TextBox();
private void Form1_Load(object sender, EventArgs e)
{
  this.Controls.Add(tb);
}
于 2013-01-07T16:25:36.907 回答
0

假设这是一个 Windows 窗体,您可以遍历Controls像 a 这样的可枚举对象的集合。TabControl这是我正在从事的一个项目中的一些内容,适用于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
            }
        }
    }
}
于 2013-01-07T16:19:24.197 回答