C#語言:MDI窗體程序中防止子窗體被多次實例化

其實這個問題,就是經典的23種設計模式中的單件模式(Singleton),下面用C#實現之:

首先我們有2個Windows Form,主窗體叫Form1,子窗體叫ChildForm。在主窗體中加入一Menu,用來實例化子窗體,我們在Form1.cs中寫入下代碼:

private static ChildForm childForm; //靜態變量,保存唯一實例

private void menuItem2_Click(object sender, System.EventArgs e)
{
ChildForm childForm = GetChildForm(); //獲取子窗體對象
childForm.Show(); //顯示之
}

private ChildForm GetChildForm()
{
//先後次序不能錯,前一個條件用來判斷是否是第一次,後一個條件用來判斷子窗體是否被關閉了
if( childForm == null || childForm.IsDisposed )
{ //第一次實例化也好,被關了也好,都重新實例化
childForm = new ChildForm();
childForm.MdiParent = this;
}

return childForm;
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章