您不应实例化 MainForm 的另一个对象,这会创建一个副本,并且具有新 MainForm 的所有对象都不会具有您实际 MainForm 的值。
方法 1
您可以尝试创建 MainForm 的静态实例,如下所示
public partial class MainForm : Form
{
public static MainForm Instance = null;
public MainForm()
{
InitializeComponent();
Instance = this;
}
public SomeMethod()
{
}
}
现在,如果您有面板类,那么您可以轻松访问 MainClass 的公共方法和变量
class Panel : Form
{
public Panel()
{
MainForm.Instance.SomeMethod();
}
}
编辑:将句柄作为参数传递给表单 (来自 Ben Voigt 的建议)
方法二:
正如 Ben 所建议的,拥有更安全的代码也很重要,因此更简洁的方法是将控件的句柄作为参数传递,然后访问它们。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TestClass test = new TestClass();
test.ModifyText(textBox1);
}
}
public class TestClass
{
public void ModifyText(TextBox textBox)
{
textBox.Text = "New text";
}
}