У меня 3 формы. Основная форма, форма2 и форма3.
Основная форма содержит большую панель, в которой форма 2 отображается при запуске программы.
Я делаю это с помощью следующего кода в моей основной форме, который отлично работает:
private Boolean loaded = false;
private void MainForm_Load(object sender, EventArgs e)
{
if (!loaded)
{
openChildForm(new Form2());
loaded = true;
}
}
public Form activeForm = null;
public void openChildForm(Form childForm)
{
if (activeForm != null)
{
activeForm.Close();
}
activeForm = childForm;
childForm.TopLevel = false;
panelMain.Controls.Add(childForm);
panelMain.Tag = childForm;
childForm.BringToFront();
childForm.Show();
}
Теперь я хочу добавить кнопку в Form2 (которая все еще отображается на панели). Когда я нажимаю эту кнопку, Form2 должен удалить себя из панели Mainform, а вместо этого Form3 должен отображаться на этой панели MainForm. Я попробовал это со следующим кодом в Form2 в Buttonclick:
new Mainform().openChildForm(new Form3());
Однако это не работает. Он по-прежнему отображает Form2 на панели и не отображает Panel3. В Mainform также говорится, что activeForm имеет значение null. Я думаю, это из-за нового вызова MainForm(). Могу ли я просто получить доступ к MainForm без создания нового экземпляра?