从类

时间:2017-06-25 16:22:13

标签: c# winforms textbox

我的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();
}

但我的文本框中没有任何变化。我在课堂上把文本框带错的方式是错误的吗?

2 个答案:

答案 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,您必须将引用传递给FormTextBox。因此,使用test参数更改TextBox方法,如下所示:

public static void test(TextBox tb)
{
    tb.Text = "Hello World";
}

像这样使用它:

private void MainButton_Click(object sender, EventArgs e)
{
    Class1.test(this.textBox1);
}