asp.net中WinForm使用单例模式示例
例如在Windows应用程序中用下面代码打开一个窗体:
代码如下 复制代码
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;
这样可以满足上边需求,但是如果有多个地方需要打开窗体,同样的代码就得copy多次,这个场景下,我们可以使用单例模式来解决:
代码如下 复制代码
About.cs:
using System;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial (www.111cn.net)class About : Form
{
/// <summary>
/// 不能在外部调用构造函数
/// </summary>
private About()
{
InitializeComponent();
}
/// <summary>
/// 单例模式
/// </summary>
/// <returns></returns>
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
asp.net中WinForm使用单例模式示例的更多相关文章
- asp.net中Winform开发框架之数据即时更新的实现
在开篇之前,首先介绍一下Winform开发框架中的界面层的继承关系,首先我把所有窗体区分为三类,一类是普通的窗体,一类编辑窗体,还有一类是列表显示窗体.窗体的集成可以封装处理很多东西,良好的封装和继承 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章 ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...
- 示例 - 如何在ASP.NET中应用Spider Studio生成的DLL?
>> 接前文 "示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?", 将其运用到ASP.NET中: 1. 创建WebApplicati ...
- ASP.net中的Cache使用介绍
1.1.1 摘要(http://www.cnblogs.com/rush/archive/2012/06/30/2571438.html) 最近我们的系统面临着严峻性能瓶颈问题,这是由于访问量增加,客 ...
- Asp.Net中使用Couchbase——Memcached缓存使用篇
Asp.Net中使用Couchbase——Memcached缓存使用篇 前言 在上一篇Asp.Net中使用Couchbase——Memcached缓存入门篇http://www.cnblogs.com ...
- 使用FluentScheduler和IIS预加载在asp.net中实现定时任务管理
FluentScheduler介绍 github地址:https://github.com/fluentscheduler/FluentScheduler FluentScheduler是一个简单的任 ...
- MVC架构在Asp.net中的应用和实现
转载自:http://www.cnblogs.com/baiye7223725/archive/2007/06/07/775390.aspx 摘要:本文主要论述了MVC架构的原理.优缺点以及MVC所能 ...
- ASP.NET中常用的优化性能的方法
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...
- asp.net中缓存的使用介绍一
asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...
随机推荐
- C118+OSMCOMBB嗅探短信
ubuntu系统:12.04.4, 下载地址:http://cdimage.ubuntu.com/releases/12.04.4/release/ 编译环境下载 : http://pan.baidu ...
- ReactJS.NET 之 Demo 初探
ReactJS.NET 是专对 .NET 平台开发者设计,让我们不只可以在前端去Render出页面,也可以在Server端去Render页面.开发 ReactJS 可以用一般JS 库,也可以通过类似X ...
- 第五周 Word注释与交叉引用
第五周 Word注释与交叉引用 教学时间 2013-3-26 教学课时 2 教案序号 4 教学目标 1.掌握脚注.尾注.题注的概念和应用 2.掌握交叉引用的操作方法 教学过程: 复习提问 1.如何利用 ...
- [转]double与BigDecimal
转自:http://superivan.iteye.com/blog/963628 [1] 精确的浮点运算: 在Java里面,有时候为了保证数值的准确性需要精确的数据,先提供一个例子就可以发现问题了: ...
- scala VS python2 操作shell对比例子
Scala: /** * Created by sunxu on 2015/9/30. */ import scala.sys.process._ import java.io.File //在相应目 ...
- 请指出document load和document ready的区别?
共同点:这两种事件都代表的是页面文档加载时触发. 异同点: ready 事件的触发,表示文档结构已经加载完成(不包含图片等非文字媒体文件). onload 事件的触发,表示页面包含图片等文件在内的所有 ...
- 使用influx控制台工具操作InfluxDB
这里记录下influx控制台的简单使用,如需更多功能请参考InfluxDB官方文档: https://docs.influxdata.com/influxdb/v1.1/ 环境: CentOS6.5_ ...
- Oracle Data Integrator 12cR1 (12.1.3.0.0)安装过程
Oracle Data Integrator 12cR1 (12.1.3.0.0)安装过程 下载安装文件 Oracle Data Integrator 12cR1 (12.1.3.0.0) http: ...
- java 第一个java程序
public class Test16{ public static void main( String args[] ) { System.out.println ("welcome to ...
- java动态代理技术
主要用来做方法的增强.让你能够在不改动源代码的情况下,增强一些方法,在方法运行前后做不论什么你想做的事情(甚至根本不去运行这种方法).由于在InvocationHandler的invoke方法中,你能 ...