[英]Opening another form in an MDI container
請參考下圖:
我正在尋找從一種形式打開另一種形式的最佳方法。 打開菜單表單后,我要關閉登錄表單。 我曾嘗試這樣做,但是當我嘗試將其稱為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.