创建新表单时将表单作为参数传递

时间:2011-03-18 11:17:11

标签: c# winforms parameters

我有一个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()行中) 那么我该怎么做呢?

2 个答案:

答案 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。