联系动态创建的控件

时间:2011-09-28 15:54:44

标签: c# winforms dynamic

我为winform应用程序创建了textBox运行时控件。一旦表单加载,控件就会出现,并且效果也很好。但是,我刚刚遇到问题,因为我意识到我不知道如何编写代码来写入动态创建的控件。

假设我在设计时上创建了一个按钮(名为“Button1”)。在Button1的单击事件(Button1_Click)中,我想将单词“Hello”写入textBox控件,该控件在执行应用程序之前不会创建。下面是一些代码:

C#代码:

// Create the textBox control
TextBox new_textBox = null;
int x = 10;
int y = 10;
int xWidth = 300;
int yHeight = 200;

new_textBox = new TextBox();
                new_textBox.Text = controlText;
                new_textBox.Name = "textBox" + controlName;
                new_textBox.Size = new System.Drawing.Size(xWidth - 10, yHeight - 10);
                new_textBox.Location = new Point(x, y);
                new_textBox.BringToFront();
                new_textBox.Multiline = true;
                new_textBox.BorderStyle = BorderStyle.None;

// Add the textBox control to the form
this.Controls.Add(new_textBox);

问题:

Button1_Click事件中,我无法与尚未创建的控件联系。因此,Visual Studio将抛出一个明显的错误,即控件不存在(因为它没有)。

  

那么,有没有办法动态调用控件,等等   具体来说,是一个textBox控件?

感谢您对此事的任何帮助,

埃文

2 个答案:

答案 0 :(得分:3)

在类范围内声明new_textBox。然后编译器可以访问它。例如:

class MyForm
{
    TextBox new_textBox;

    void InitializeTextBox()
    {
        new_textBox = new TextBox();
        // initialization code here
        // Add it to the form
        this.Controls.Add(new_textBox);
    }

    void Button1_Click(...)
    {
        new_textBox.Text = "clicked";
    }

答案 1 :(得分:0)

您可以使new_textBox成为类成员(表单成员)。您可以再次为其分配一个值,然后动态添加到窗体控件。 但是,检查buttonClick事件中是否为空是一个好习惯。

相关问题