Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 C#从其他方法读取动态创建的文本框的文本_C# 4.0 - Fatal编程技术网

C# 4.0 C#从其他方法读取动态创建的文本框的文本

C# 4.0 C#从其他方法读取动态创建的文本框的文本,c#-4.0,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**=="som

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

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;
}
问题是我在按钮处理程序中找不到textbox控件


提前感谢

您必须声明texbox不在方法中,它必须是全局的。然后您可以访问textbox对象

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

文本框
声明为您的
表单
类私有成员。

您可以迭代可枚举对象的
控件
集合,例如
选项卡控件
,假设这是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
            }
        }
    }
}

你不能直接调用
.FindControl(..)
来查找所讨论的文本框吗?啊,答案几乎描述了一个
.Find(..)
方法,可能是针对一个可枚举的容器,比如
TabControl
。不确定FindControl是否只适用于ASP.NET?是的,关于它是ASP.NET/web还是Windows窗体,问题还没有定论。。。是-
.FindControl()
特定于ASP.NET
private TextBox tb = new TextBox();
private void Form1_Load(object sender, EventArgs e)
{
  this.Controls.Add(tb);
}