一直在写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 窗体的单例模式相关推荐

  1. winform窗体对象 单例模式与泛型结合

    实现弹出窗体对象的单例模式  结合泛型后,可以用于所有窗体的弹出操作 public class BaseFrm<T> where T : Form, new(){//定义一个静态的,私有的 ...

  2. 如何在多线程中调用winform窗体控件2——实例篇

    如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...

  3. 重绘Winform窗体

    本文转载自:http://www.cnblogs.com/encoding/p/5603080.html 按照惯例,先来几张样例图(注:为了展示窗口阴影效果,截图范围向外扩展了些,各位凭想象吧). 还 ...

  4. C#:绘制Winform窗体

    Winform窗体缺少左上角效果: public void SetWindowRegion(){System.Drawing.Drawing2D.GraphicsPath FormPath;FormP ...

  5. WinForm窗体缩放动画

    WinForm自带的窗体大小发生改变的时候,当内存不够的时候,会出现界面停滞的现象,会出现许多的条条纹纹,给人很不好的感觉,这里提供一个WinForm窗体缩放时会有一个渐变的动画效果给大家. 思路是这 ...

  6. C#使用事件方式Winform窗体之间传值

    [摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...

  7. c# groupbox大小_【已解决】C#中使得控件随着WinForm窗体的大小改变而自动变化

    [问题] 想要使得一个C#中的一个窗体中的控件,DataGridView,自动随着WinForm窗体变化而变化,即: 中的显示数据的灰色部分, 另外还有上面那个"2.actions" ...

  8. C#Winform窗体实现服务端和客户端通信例子(TCP/IP)

    Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...

  9. 透明的WinForm窗体

    this.Location = new System.Drawing.Point(100, 100);             this.Cursor = System.Windows.Forms.C ...

  10. winform窗体模板_如何验证角模板驱动的窗体

    winform窗体模板 介绍 (Introduction) In this article, we will learn about validations in Angular template-d ...

最新文章

  1. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国
  2. python des解密_python实现DES加密解密方法实例详解
  3. python教程:列表推导式对比For循环执行效率
  4. JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截
  5. 大数据量高并发的数据库优化(转)
  6. qt int转换成qstring_Qt 加载cern-root库 并调用root类
  7. 每天干的啥?(2017.6)
  8. cocos2dx在不同安卓机型下scrollview裁剪失败
  9. logstash 收集windows日志--解决日志不能重命名问题
  10. 以 Ext.Net 1.2.0 为例了解网页测试工具 HttpWatch
  11. dbeaver生成结构图_DBeaver的简易操作和建议(一个神奇的数据库操作软件)
  12. 如何安装mysql 5.72_linux安装MySQL5.7.13(二进制|源码)
  13. SARIMA时间序列模型预测城市房价数据
  14. 万字长文带你彻底搞懂什么是 DevOps
  15. ​独家 | 为什么程序员不应该长期留在一家公司?
  16. 报错解决:AttributeError: ‘Word2VecKeyedVectors‘ object has no attribute ‘save_Word2Vec_format‘
  17. jacoco不是奶茶,却像奶茶一样美味,不尝一下吗?
  18. [C]sprintf用法
  19. 运算器的基本组成及操作过程
  20. 关闭不需要服务 为Windows系统提速(转)

热门文章

  1. 输入上下文句柄相关函数 linux,一起聊聊WSL的那些事儿(上)
  2. 有关windows10修改C盘用户中文名文件夹相关问题的具体解决方案
  3. 安利三款好用的音频剪辑软件,值得收藏
  4. 计算机为什么采用二进制
  5. php坏处,cpu超频有什么坏处
  6. W10一键进入安全模式
  7. java method方法_Java Method getDeclaringClass()方法
  8. PHP在线手册 中文版
  9. Ubuntu 20.04换阿里源
  10. DHCP Relay 配置教程