簡體   English   中英

MDI子窗體使用相同的父窗體互相打開

[英]MDI Child Forms Opening each other with the same parent form

因此,我有3個表單,可以將它們稱為Form1,Form2和Form3。 我已經將Form1的IsMDIParent屬性發送為true。

當我啟動應用程序時,它將使用以下形式將Form2加載為MDI子級:

Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();

而且效果很好。 然后,我要做的是單擊帶有第二個表單的按鈕,該按鈕將關閉Form2並將Form3作為Form1的子表單打開。

我試過了

SecondForm SecondFormMDI = new SecondForm();
SecondFormMDI.MdiParent = Form1;
SecondFormMDI.Show();

在Form2中的按鈕單擊事件上,但是它將不起作用。

我是否必須始終從父表單啟動子表單? 如果是這樣,當它在子窗體的按鈕單擊事件上時,我將如何去做?

只需使用this.MdiParent,而不是Form1,就像

    SecondForm SecondFormMDI = new SecondForm();
    SecondFormMDI.MdiParent = this.MdiParent;
    SecondFormMDI.Show();

您可以在設計時設置任何形式的MDIParent,為什么要在運行時設置? 只需將Form2和Form3的MDIParent屬性的值設置為Form1即可。

您可以在MDIForm中創建一個方法來打開子窗體:

public void OpenForm(Form form)
{
    form.MdiParent = this;
    form.Show();
}

當您想以另一種形式打開新表單時,您可以執行以下操作(ChildFormOne中帶有按鈕的示例):

private void btnOpenChildFormTwo_Click(object sender, EventArgs e)
{
    ((MDIForm)this.MdiParent).OpenForm(new ChildFormTwo());
    this.Close();
}

希望這可以幫助。

ChildForm frmChild = new ChildForm();
frmChild.MdiParent = this.MdiParent;
frmChild.Dock = DockStyle.Fill();
frmChild.Show();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM