从另一个类更改文本框

Dej*_*ano 6 .net c# textbox winforms

我正在尝试更改位于的文本框的值

public partial class Form1 : Form
Run Code Online (Sandbox Code Playgroud)

从另一个班级.我尝试过这样的事情

public void echo(string text)
{
    this.textBox1.AppendText(text + Environment.NewLine);
}
Run Code Online (Sandbox Code Playgroud)

从另一个课我称之为

Form1 cout = new Form1();
cout.echo("Does this work?");
Run Code Online (Sandbox Code Playgroud)

我得到空白输出.我也尝试将static关键字添加到echo方法中,但我得到了相同的结果.我搜索了Stack Overflow并没有得到任何解决方案.有一件事会触发我,如果我添加cout.Show()相同的表单弹出有效textBox1内容.这是为什么?

为什么不立即显示内容?我该如何解决这个问题?

mr.*_*eze 11

每次您说新的Form1()时,您都在创建该表单的独特且独立的实例.相反,您需要在尝试访问表单的类中创建一个变量.例如,让我们在构造函数中传递它:

public class MyClass {
    public Form1 MyForm;

    public MyClass(Form1 form){
        this.MyForm = form;
    }

    public void echo(string text) {
        this.MyForm.textBox1.AppendText(text + Environment.NewLine);            
    }

}
Run Code Online (Sandbox Code Playgroud)

请注意,您在echo方法中访问Form1的特定实例:

public void echo(string text) {
     this.MyForm.textBox1.AppendText(text + Environment.NewLine);
}
Run Code Online (Sandbox Code Playgroud)

  • 您还必须将文本框的“修饰符”更改为“公共”。 (2认同)