簡體   English   中英

在MDI容器中打開另一個表單

[英]Opening another form in an MDI container

請參考下圖:

http://i.imgur.com/mMS2wDk.jpg

我正在尋找從一種形式打開另一種形式的最佳方法。 打開菜單表單后,我要關閉登錄表單。 我曾嘗試這樣做,但是當我嘗試將其稱為MDI容器的子代時迷路了。

無法顯示主表單的原因是因為一旦關閉登錄表單,應用程序的消息泵就會關閉,這將導致整個應用程序退出。 Windows消息循環與登錄表單相關聯,因為這是您在項目屬性中設置為啟動表單的表單。 查看“ Program.cs”文件,您將看到負責的代碼:Application.Run(new LoginForm())。 在MSDN上查看有關該方法的文檔,其中對此進行了更詳細的說明。

最好的解決方案是將代碼從登錄表單中移出到“ Program.cs”文件中。 程序首次啟動時,您將創建並以模式對話框形式顯示登錄表單(該對話框在單獨的消息循環上運行,並阻止其余代碼的執行,直到關閉為止)。 登錄對話框關閉后,您將檢查其DialogResult屬性以查看登錄是否成功。 如果是這樣,則可以使用Application.Run啟動主窗體(從而創建主消息循環)。 否則,您可以退出應用程序而無需顯示任何形式。 像這樣:

static void Main()
{
    LoginForm fLogin = new LoginForm();
    if (fLogin.ShowDialog() == DialogResult.OK)
    {
        Application.Run(new MainForm());
    }
    else
    {
        Application.Exit();
    }
}

如果您開發WPF表單,則可以使用“ http://wpfmdi.codeplex.com/ ”。 或在Win Form中,您可以使用自己想要的形式

嘗試這個

    //global form
    LoginForm login = new LoginForm();
    public void menuOpen()
    {
       if(login.Visible)
          login.Close();
    }

暫無
暫無

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

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