如何处理在运行时创建的Windows窗体控件?

时间:2012-09-14 13:10:30

标签: c# winforms runtime controls

我有Form,其中有两个控件,ButtonTextBox
这些控件是在运行时创建的。

当我点击Button时,我想对TextBox.Text属性进行一些操作 但是,使用此代码我不能:

 private void Form1_Load(object sender, EventArgs e)
 {
     TextBox txb = new TextBox();
     this.Controls.Add(txb);
     Button btn = new Button();
     this.Controls.Add(btn);
     btn.Click += new EventHandler(btn_Click);
 }

我在这里试图找到它:

public void btn_Click(object sender, EventArgs e)
{
    foreach (var item in this.Controls)
    {
        if (item is TextBox)
        {
            if (((TextBox)item).Name=="txb")
            {
                MessageBox.Show("xxx");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

你没有名字" txb"的文本框。所以,这个表达式总是假的:if(((TextBox)item).Name=="txb")

试试这段代码:

private void Form1_Load(object sender, EventArgs e)
 {
     TextBox txb = new TextBox();
     txb.Name = "txb";
     this.Controls.Add(txb);
     Button btn = new Button();
     this.Controls.Add(btn);
     btn.Click += new EventHandler(btn_Click);
 }

答案 1 :(得分:0)

我会保存对TextBox

的引用
TextBox txb;
private void Form1_Load(object sender, EventArgs e)
 {
     txb = new TextBox();
     this.Controls.Add(txb);
     Button btn = new Button();
     this.Controls.Add(btn);
     btn.Click += new EventHandler(btn_Click);
 }