之前在開發winform程序的時候,經常做這樣的控制:每個form同時只能出現一個。
方法有很多,通常我都采用這種方式:(通過一個public 的static 字段進行控制)
主窗體menu:
private
void
subMenu1ToolStripMenuItem_Click(
object
sender, EventArgs e)
{
if (frm.sign == false)
{
frm f = new frm();
f.MdiParent = this;
frm.sign = true;
f.Show();
}
else
{
MessageBox.Show("該窗體已經存在~");
return;
}
}
frm窗體:
public
static
bool
sign
=
false
;
public
frm()
{
InitializeComponent();
}

private
void
frm_FormClosing(
object
sender, FormClosingEventArgs e)
{
sign = false;
}
這種方式可以很好的工作。
在Singleton Pattern,提到這種模式有幾個特點:
- 單例類只能有一個實例。
- 單例類必須自己創建自己的唯一實例。
- 單例類必須給所有其它對象提供這一實例。
轉自:
(並非原創,但是找不到原來的鏈接了,如果誰看到了原文鏈接,留個言,謝謝)
