我为winform应用程序创建了textBox
运行时控件。一旦表单加载,控件就会出现,并且效果也很好。但是,我刚刚遇到问题,因为我意识到我不知道如何编写代码来写入动态创建的控件。
假设我在设计时上创建了一个按钮(名为“Button1”)。在Button1的单击事件(Button1_Click
)中,我想将单词“Hello”写入textBox控件,该控件在执行应用程序之前不会创建。下面是一些代码:
// 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控件?
感谢您对此事的任何帮助,
埃文答案 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事件中是否为空是一个好习惯。