asp.net中WinForm使用单例模式示例
2020-12-13 16:08
标签:winform http io ar os 使用 sp for on 例如在Windows应用程序中用下面代码打开一个窗体: 代码如下 复制代码 其结果是每点一次按钮都会打开一个窗体,最后可能是这样: 代码如下 复制代码 这样可以满足上边需求,但是如果有多个地方需要打开窗体,同样的代码就得copy多次,这个场景下,我们可以使用单例模式来解决: 代码如下 复制代码 using System; namespace WindowsFormsApplication1 /// 调用方法: 代码如下 复制代码 asp.net中WinForm使用单例模式示例 标签:winform http io ar os 使用 sp for on 原文地址:http://www.cnblogs.com/alibai/p/4080124.html
private void button1_Click(object sender, EventArgs e)
{
(new About()).Show();
}
这显然这我不是我们想要的,正常应该是点击按钮时判断窗体有没有打开过,有打开过显示激活窗体,没有则创建并打开窗体,对代码稍做修改:
private void button1_Click(object sender, EventArgs e)
{
if (frmAbout == null || frmAbout.IsDisposed)
{
frmAbout = new About();
frmAbout.Show(this);
}
else
{
frmAbout.WindowState = FormWindowState.Normal;
frmAbout.Activate();
}
}
private About frmAbout = null;
About.cs:
using System.Text;
using System.Windows.Forms;
{
public partial (www.111cn.net)class About : Form
{
///
/// 不能在外部调用构造函数
///
private About()
{
InitializeComponent();
}
/// 单例模式
///
///
public static About GetInstance()
{
if (_frmAbout == null || _frmAbout.IsDisposed)
{
_frmAbout = new About();
}
return _frmAbout;
}
private static About _frmAbout = null;
}
}
private void button1_Click(object sender, EventArgs e)
{
About frmAbout = About.GetInstance();
frmAbout.Show();
frmAbout.WindowState = FormWindowState.Normal;
frmAbout.Activate();
}
from:http://www.111cn.net/net/171/65990.htm