我在C#中安装了Windows应用程序,并在GUI中有一个richtextbox。我想要访问richtextbox并从类中添加一些文本。我想过在表单的代码文件中创建一个静态的RichTextBox项,然后像这样调用它:
public partial class Form1 : Form
{
public static RichTextBox box;
public Form1()
{
box = richtextbox_in_gui;
}
}
public class SomeClass()
{
Form1.box.AppendText("...");
}
这是一种安全的方法吗?或者还有其他方法可以做到这一点吗?
由于
答案 0 :(得分:3)
您不需要静态字段,因为Form1
的所有实例都是如此;它应该是一个正常的领域。
然而,public
字段不是一个好主意,因为可以从外部操纵类。你想要封装行为,所以最好的想法是一个方法:
public partial class Form1 : Form
{
public Form1()
{
box = richtextbox_in_gui;
}
public void AppendText(string text)
{
this.textbox.AppendText(text);
}
}
public class SomeClass
{
private Form1 form;
public SomeClass(Form1 form)
{
this.form = form;
}
public void AppendHelloWorld()
{
this.form.AppendText("Hello World");
}
}
现在,如果您有对表单对象的引用,则可以使用AppendText
方法:
Form1 form = new Form1();
var some = new SomeClass(form);
some.AppendHelloWorld();
这种编码方式称为Dependency Injection。