我的Main form
文件框和面板中有一些对象。
所以我想从我的班级更改文本框文本或大小或可见性。
我从textBox1
公开发布了Main form
。
所以我创建了一个名为Class1
的类:
public class Class1
{
public static void test()
{
Main form = new Main();
form.textBox1.Text = "Hello World";
}
}
在我的Main form
中,我运行了我班级的代码:
private void MainButton_Click(object sender, EventArgs e)
{
Class1.test();
}
但我的文本框中没有任何变化。我在课堂上把文本框带错的方式是错误的吗?
答案 0 :(得分:4)
问题是您在此处构建了新 Form
:
public static void test() {
Main form = new Main(); // constructing a new form?
form.textBox1.Text = "Hello World";
}
然而,您可以通过将引用传递给Form
来解决此问题:
public static void test(Main form) {
form.textBox1.Text = "Hello World";
}
并致电:
private void MainButton_Click(object sender, EventArgs e) {
Class1.test(this); // pass a reference to the Main form
}
答案 1 :(得分:1)
在您的test
方法中,您正在制作表单的新实例(这不是您调用该方法的那个)...新的仍然隐藏的形式。
要更改现有Textbox
,您必须将引用传递给Form
或TextBox
。因此,使用test
参数更改TextBox
方法,如下所示:
public static void test(TextBox tb)
{
tb.Text = "Hello World";
}
像这样使用它:
private void MainButton_Click(object sender, EventArgs e)
{
Class1.test(this.textBox1);
}