簡體   English   中英

使用父MDI上的主菜單條控件來關閉子MDI C#

[英]close child mdi c# using main menu strip control on parent mdi

我正在Visual Studio 2010中使用MDI表單中的C#創建Windows表單應用程序。 我已經設法將子窗體連接到父mdi窗體上的相應菜單條控件,但是,我希望將這些子mdi窗體停靠在父mdi的大小上,並在使用另一個子mdi窗體打開時自動關閉它們另一個菜單條控件。

例如,我有一個名為Tile Model的菜單條項目,單擊該菜單項會調用/打開特定的子窗體。 當我單擊另一個菜單條項目(假設為“帳戶”)時,“平鋪模型”菜單項所調用的子窗體必須自動關閉,而“帳戶”菜單條項所調用的子窗體將打開。

請注意,我已將窗體邊框樣式設置為“無”。

我現在所擁有的代碼發生的事情是,每當打開子mdi表單並處於活動狀態時,就會打開另一個子表單,這些小巧的表單就會重疊,看起來看起來很凌亂。

這里摘錄自我的代碼。

公共部分類Form1:表單{public Form1(){InitializeComponent(); }

    private void manageTileModelToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ManageTileModel ChildForm = new ManageTileModel();
        ChildForm.MdiParent = this;
        ChildForm.Show();

    }

    private void startInspectionToolStripMenuItem_Click(object sender, EventArgs e)
    {
        StartInspection ChildForm = new StartInspection();
        ChildForm.MdiParent = this;
        ChildForm.Show();


    }

    private void manageTestReportsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ManageTestReports ChildForm = new ManageTestReports();
        ChildForm.MdiParent = this;
        ChildForm.Show();
    }

    private void registerNewAccountToolStripMenuItem_Click(object sender, EventArgs e)
    {
        RegNewAccount ChildForm = new RegNewAccount();
        ChildForm.MdiParent = this;
        ChildForm.Show();
    }

    private void manageAccountsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ManageAccounts ChildForm = new ManageAccounts();
        ChildForm.MdiParent = this;
        ChildForm.Show();
    }

    private void inspectionToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        GenHelpInspection ChildForm = new GenHelpInspection();
        ChildForm.MdiParent = this;
        ChildForm.Show();
    }

    private void tileModelToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        GenHelpTileModel ChildForm = new GenHelpTileModel();
        ChildForm.MdiParent = this;
        ChildForm.Show();
    }

    private void accountsToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        GenHelpAccounts ChildForm = new GenHelpAccounts();
        ChildForm.MdiParent = this;
        ChildForm.Show();
    }

    private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
    {
        About ChildForm = new About();
        ChildForm.MdiParent = this;
        ChildForm.Show();
    }

回復非常有幫助,我將非常感謝。:)謝謝。

如果只想顯示一個MDI子項,那么如何使用私有字段存儲最后顯示的子項。 然后,您可以編寫這樣的方法:

private void HideLastChild() {
    if(_lastChild != null)
        _lastChild.Close();
}

並在ChildForm.Show()之前調用它,當然,您還必須更新_lastChild字段:

ChildForm.Show();
_lastChild = ChildForm;

您可以將所有顯示操作合並為一個通用方法:

private void ShowChild<TWindow>() where TWindow: Form, new() {
    var child = new TWindow();
    HideLastChild();
    _lastChild = child;
    child.MDIParent = this;
    child.Show();
}

ShowChild<About>();

暫無
暫無

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

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