winform 窗体的单例模式
一直在写BS程序,最近公司需要写一些CS程序。
遇到的问题很常见也很简单,就是新打开一个窗体时如果该窗体存在就调用不存在就创建,但就是查了半天就没有一个人说正题的。
好了废话少说我的解决方法如下:
请支持我的网站:http://www.haoy7.com
单例窗体类
public class FormSingle<T> where T : Form, new(){private static T form;private static object obj = new object();public static T GetForm(){if (form == null){lock (obj){if (form == null)CreateNewForm();}}return form;}/// <summary>释放对象/// </summary>/// <param name="obj"></param>/// <param name="args"></param>private static void Display(object obj, FormClosedEventArgs args){form = null;}/// <summary>创建新窗体/// </summary>private static void CreateNewForm(){form = new T();form.FormClosed += new FormClosedEventHandler(Display);//订阅窗体的关闭事件,释放对象}}
客户端调用:
private void button1_Click(object sender, EventArgs e){Form2 tempForm = FormSingle<Form2>.GetForm();tempForm.Show();tempForm.Activate();}
请支持我的网站: http://www.haoy7.com 好游戏网
注意:代码是给需要的人看的,本人不是作家水平也有限,请不要妄加评论,谢谢!
转载于:https://www.cnblogs.com/haog/archive/2011/04/09/2010643.html
winform 窗体的单例模式相关推荐
- winform窗体对象 单例模式与泛型结合
实现弹出窗体对象的单例模式 结合泛型后,可以用于所有窗体的弹出操作 public class BaseFrm<T> where T : Form, new(){//定义一个静态的,私有的 ...
- 如何在多线程中调用winform窗体控件2——实例篇
如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...
- 重绘Winform窗体
本文转载自:http://www.cnblogs.com/encoding/p/5603080.html 按照惯例,先来几张样例图(注:为了展示窗口阴影效果,截图范围向外扩展了些,各位凭想象吧). 还 ...
- C#:绘制Winform窗体
Winform窗体缺少左上角效果: public void SetWindowRegion(){System.Drawing.Drawing2D.GraphicsPath FormPath;FormP ...
- WinForm窗体缩放动画
WinForm自带的窗体大小发生改变的时候,当内存不够的时候,会出现界面停滞的现象,会出现许多的条条纹纹,给人很不好的感觉,这里提供一个WinForm窗体缩放时会有一个渐变的动画效果给大家. 思路是这 ...
- C#使用事件方式Winform窗体之间传值
[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...
- c# groupbox大小_【已解决】C#中使得控件随着WinForm窗体的大小改变而自动变化
[问题] 想要使得一个C#中的一个窗体中的控件,DataGridView,自动随着WinForm窗体变化而变化,即: 中的显示数据的灰色部分, 另外还有上面那个"2.actions" ...
- C#Winform窗体实现服务端和客户端通信例子(TCP/IP)
Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...
- 透明的WinForm窗体
this.Location = new System.Drawing.Point(100, 100); this.Cursor = System.Windows.Forms.C ...
- winform窗体模板_如何验证角模板驱动的窗体
winform窗体模板 介绍 (Introduction) In this article, we will learn about validations in Angular template-d ...
最新文章
- centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国
- python des解密_python实现DES加密解密方法实例详解
- python教程:列表推导式对比For循环执行效率
- JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截
- 大数据量高并发的数据库优化(转)
- qt int转换成qstring_Qt 加载cern-root库 并调用root类
- 每天干的啥?(2017.6)
- cocos2dx在不同安卓机型下scrollview裁剪失败
- logstash 收集windows日志--解决日志不能重命名问题
- 以 Ext.Net 1.2.0 为例了解网页测试工具 HttpWatch
- dbeaver生成结构图_DBeaver的简易操作和建议(一个神奇的数据库操作软件)
- 如何安装mysql 5.72_linux安装MySQL5.7.13(二进制|源码)
- SARIMA时间序列模型预测城市房价数据
- 万字长文带你彻底搞懂什么是 DevOps
- ​独家 | 为什么程序员不应该长期留在一家公司?
- 报错解决:AttributeError: ‘Word2VecKeyedVectors‘ object has no attribute ‘save_Word2Vec_format‘
- jacoco不是奶茶,却像奶茶一样美味,不尝一下吗?
- [C]sprintf用法
- 运算器的基本组成及操作过程
- 关闭不需要服务 为Windows系统提速(转)