Показать форму MDIChild из другой формы MDIChild - PullRequest
0 голосов
/ 16 февраля 2020

Давайте у меня будет MDIParentForm (Home) , Дочерняя форма (Form1, Form2) , Home имеет одно Меню (Добавить) и Form1 имеет кнопку (btnOk)

'' '' 'Вот C# код' '' '' '

 public partial class Home : DevExpress.XtraBars.Ribbon.RibbonForm
{
    public Home()
    {
        InitializeComponent();
    }
    public void  CreateForm(Form frm)
    {
        frm.MdiParent = this;
        frm.WindowState = FormWindowState.Maximized;
        frm.Show();
    }
    private void btnAddForm_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
        Form1 frm = new Form1();
        CreateForm(frm);
    }
}
//Up to this 1st level my code works fine.
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnDone_Click(object sender, EventArgs e)
    {
//From Here I am not able show the Form2.
        Home MDIParentForm = new Home();
        Form2 frm = new Form2();
        MDIParentForm.CreateForm(childForm);
    }
}

Действие: по нажатию Добавить Меню, которое я использовал для открытия Form1 (работает нормально) и по нажатию btnOk Я хочу открыть Форма 2 (это еще одна форма MDIChild).

Дайте мне знать, как мы можем выполнить sh эту задачу.

1 Ответ

1 голос
/ 16 февраля 2020

Что вы делаете, вы создаете еще один экземпляр вашего родителя MDI и устанавливаете Form2 как дочерний элемент этого вновь созданного родителя MDI. Это явно неправильно, вы хотите, чтобы оба были детьми одного и того же родителя.

Либо сделайте это напрямую:

private void btnDone_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    // both have the same MDI parent
    frm.MDIParent = this.MDIParent;
    frm.Show();
}

или, если вы настаиваете на повторном использовании вашего CreateForm

private void btnDone_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    ((Home)this.MDIParent).CreateForm( frm );
}

Оба подхода зависят от this.MDIParent, установленного в form1, и убедитесь, что один и тот же экземпляр используется для вновь созданной формы 2.

...