当主窗体实例化第二个窗体时,它可以将对自身的引用传递给第二个窗体的构造函数.
因此,第二种形式将可以访问第一种形式的公共成员.
编辑
在Form1中,您在某处实例化Form2并在ctor中传递对Form1的引用:
Form2 f2 = new Form2(this);
Run Code Online (Sandbox Code Playgroud)
在Form2的类定义中添加一个字段:
private Form1 m_form = null;
Run Code Online (Sandbox Code Playgroud)
在第二个表单的构造函数中设置该字段:
public Form2(Form1 f)
{
m_form = f;
}
Run Code Online (Sandbox Code Playgroud)
然后,在Form2中的任何地方,您都可以通过m_form访问Form1
您可能从Form1中实现了Form2.在实例化之后,在显示它之前,你可以在Form2上设置一个属性,引用Form1,如下所示:
Form2 f2 = new Form2();
f2.TheParent = this;
f2.Show();
Run Code Online (Sandbox Code Playgroud)
当然,您必须将TheParent属性添加到Form2类才能够执行此操作.
警告:虽然这种方式可行,但更好的解决方案可能是创建一个包含所有必需/共享数据的单独对象,并以类似的方式将该对象传递给每个表单.这样可以防止代码过于耦合.