我有一个MainForm,它是MDI容器。在MainForm中,我创建了两个新的表单,在buttonclick上打开 - Form1和Form2。还有一个第三种形式 - CommonFom,我应该能够从Form1打开,还有Form2(在buttonclick上打开)。如果我在Form1和2之间切换,我需要第三个表格来保存信息,所以我无法从Form1和2创建它的新实例。 我想在MainForm中做这样的事情:
CommonForm CF = new CommonForm();
Form1 x = new Form1(CF);
Form2 y = new Form2(CF);
之后,在Form1和Form2中:
public MainForm(CommonForm theCF)
{
InitializeComponent();
}
...按钮上的某个地方
CF.show();
但它显示Form1中的错误,而不是没有对象CF的实例(在CF.Show()行中) 那么我该怎么做呢?
答案 0 :(得分:2)
在开头的Form1和Form2中声明。 (因为代码中缺少它,我不确定编译错误或运行时错误)
private Form CF; //The reason I've declared the type as Form is to have flexibility of having any form to show.
像这样修改Form1和Form2的每个构造函数。
public MainForm(CommonForm theCF)
{
this.CF = theCF;
InitializeComponent();
}
它可以解决你的问题。
答案 1 :(得分:0)
将CommonForm
用作单例:即在static
类中提供类型为Instance
的{{1}}属性CommonForm
,将其实例化为CommonForm构造函数。然后,您可以使用CommonForm
随处访问CommonForm。