В C # как открыть третью форму внутри первой формы, когда я нажимаю кнопку второй формы - PullRequest
0 голосов
/ 14 марта 2019

В моем Windows Forms приложении у меня есть 3 различных Form s ( Form1, Form2, Form3 )

  • Form1 Содержит кнопку и панель (button1, panel1)

    Form1 Image

  • Форма 2 Содержит только кнопку (кнопку)

    Form2 Image

  • Форма 3 Не содержит ничего

    Form3 Image

В Form1, когда я нажимаю кнопку1, Form2 открывается в панели 1

(see in image)

private void button1_Click(object sender, EventArgs e)
{
    panel1.Controls.Clear();
    Form2 f2 = new Form2();
    f2.TopLevel = false;
    panel1.Controls.Add(f2);
    f2.Dock = DockStyle.Fill;
    f2.Show();
}

Теперь внутри Form2, когда я нажимаю кнопку, я хочу, чтобы Form3 открывалась внутри панели Form1, я пробовал этот код ...

Form1 f1 = new Form1();
private void button1_Click(object sender, EventArgs e)
{
    f1.panel1.Controls.Clear();
    Form3 f3 = new Form3();
    f3.TopLevel = false;
    f1.panel1.Controls.Add(f3);
    f3.Dock = DockStyle.Fill;
    f3.Show();
}

Примечание. В Form1 я изменил модификатор на public для Panel

1 Ответ

0 голосов
/ 14 марта 2019

Шаг 1: Создайте функции в форме Form1 для отображения других форм:

class Form1
{
    public void ShowForm2() {...}
    public void ShowForm3() {...}
    // TODO: think about: do you need IsForm2Shown?
    // TODO: think about what you want if ShowForm2 is called twice
    ...

}

Шаг 2: Сообщите Form2 о Form1.Дайте Form2 функцию, чтобы показать Form3 внутри Form1

class Form2
{
    public Form1 Form1 {get; set;}

    protected void ShowForm3InsideForm1()
    {
        this.Form1.ShowForm3();
    }
}

Всякий раз, когда Form one создает Form2, она должна заполнить свойство Form1.Итак, внутри Form1.ShowForm2():

var form2 = new Form2()
{
   Form1 = this,
   ...
}
form2.Show();

Шаг 3: когда вы обнаружите, что в Форме 2 вы хотите «показать форму 3 в Форме 1», просто вызовите соответствующую функцию

// Somewhere inside Form2 code you decide that you want to show Form3 inside Form1:
this.ShowForm3InsideForm1();

Простой комм бонжур!

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