Передача формы в качестве параметра при создании новой формы - PullRequest
0 голосов
/ 18 марта 2011

У меня есть MainForm, который является MDI-контейнером. В MainForm я создаю 2 новые формы, которые открываются по нажатию кнопки - Form1 и Form2. И есть еще 3-я форма - CommonFom, которую я должен иметь возможность открывать из Form1 и Form2 (по нажатию кнопки). Мне нужна 3-я форма для сохранения информации, если я переключаюсь между Form1 & 2, поэтому я не могу создавать новые экземпляры из Form1 & 2. Я пытаюсь сделать что-то подобное в MainForm:

CommonForm CF = new CommonForm();
Form1 x = new Form1(CF);
Form2 y = new Form2(CF);

после этого в форме 1 и форме 2:

public MainForm(CommonForm theCF)
        {
            InitializeComponent();
        }

... где-то по нажатию кнопки

CF.show();

Но это показывает мне ошибку в Form1, чем нет экземпляра объекта CF (в строке CF.Show ()) Так как мне сделать это правильно?

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Объявите в 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();        
}

это должно решить вашу проблему.

0 голосов
/ 18 марта 2011

Используйте CommonForm в качестве одиночного: т.е. предоставьте свойство static Instance типа CommonForm внутри класса CommonForm, создайте его экземпляр конструктором CommonForm. Тогда вы можете иметь повсеместный доступ к CommonForm, используя CommonForm.Instance.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...