在一個項目中往往有多個Form,在Program.cs中指定了第一個窗體:
1 Application.Run(new MainForm());
記得在大學時候,曾經用C#寫過《軟件工程》項目,也是由多個窗體構成的,需要在主窗體和其他窗體之間切換。當時構想的用例是這樣的,在第一個窗體中調用子窗體之后,隱藏主窗體,因此有:
1 private void elementToolStripMenuItem_Click(object sender, System.EventArgs e)
2 {
3 ElementForm elementForm = new ElementForm();
4 elementForm.Show();
5 this.Hide();
6 }
但當第二個窗體關閉,需要重新顯示主窗體時候,怎么辦,有幾種辦法?這似乎是一道不錯的面試考題:
1 將this作為構造函數參數傳給子窗體;
2 在主窗體類中保存static屬性的自身實例(想起工廠模式);
3 給子窗體實例的ClosedEvent添加內容為this.show()的處理函數
仔細想想,為什么非得將主窗體隱藏?如果只是想在子窗體返回之前禁用父窗體,可以用showdialog()(完全沒有想到這個函數,然而這個函數應該是C#教程的標配,可見系統學習的重要,不要以為能通過google和MSDN查接口就輕易說自己掌握一門語言)。