C# 單例模式實現例項產生一個窗體物件
阿新 • • 發佈:2019-02-04
單例模式實現例項產生一個窗體物件
開發過程中遇到了這樣一種情況,單擊按鈕產生一個窗體並顯示出來,但是每次點選都會彈出一個新的窗體,這與想要的效果不免有些差異。我們需要若子窗體已經顯示出來,那麼我們就不再需要例項化新的子窗體,若是子窗體還未例項化或者關閉了這個子窗體,我們就需要例項化新的子窗體。結合這種需求,和所需到的知識,下面我將提供一種解決方案。
修改前程式碼:
父窗體程式碼: ChildForm child = new ChildForm();
child.Show();
修改後程式碼:
子窗體程式碼
public partial class ChildForm : Form
{
//宣告靜態物件
public static ChildForm child;
public ChildForm()
{
InitializeComponent();
}
public static ChildForm CreatSingleForm2()
{
//窗體是否已在記憶體中存在,不存在就例項化,然後返回此例項
if(child==null)
{
child = new ChildForm();
}
return child;
}
//在窗體關閉後清空窗體在記憶體中佔用的空間
private void ChildForm_FormClosed(object sender, FormClosedEventArgs e)
{
child = null;
}
{
//宣告靜態物件
public static ChildForm child;
public ChildForm()
{
InitializeComponent();
}
public static ChildForm CreatSingleForm2()
{
//窗體是否已在記憶體中存在,不存在就例項化,然後返回此例項
if(child==null)
{
child = new ChildForm();
}
return child;
}
//在窗體關閉後清空窗體在記憶體中佔用的空間
private void ChildForm_FormClosed(object sender, FormClosedEventArgs e)
{
child = null;
}
}
父窗體程式碼:
ChildForm child = ChildForm.CreatSingleForm2();
child.Show();