本文实例讲述了WinForm单例窗体。分享给大家供大家参考,具体如下:
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Text; namespace Common { /// <summary> /// 窗体的单例模式 /// </summary> /// <typeparam name="T"></typeparam> public class FormSingle<T> where T : Form, new() { private static T form; private static IList<T> list { get; set; } public static T GetForm(T t1) { //检查是否存在窗体 if (!IsExist(t1)) { CreateNewForm(t1); } return form; } /// <summary>释放对象 /// </summary> /// <param name="obj"></param> /// <param name="args"></param> private static void Display(object obj, FormClosedEventArgs args) { form = null; list.Remove(form); } /// <summary>创建新窗体 /// </summary> private static void CreateNewForm(T t1) { form = t1; form.FormClosed += new FormClosedEventHandler(Display);//订阅窗体的关闭事件,释放对象 } /// <summary> /// 是否存在该窗体 /// </summary> /// <param name="T1"></param> /// <returns></returns> private static bool IsExist(T T1) { if (list == null) { list=new List<T>(); list.Add(T1); return false; } //如果窗体的文本相同则认为是同一个窗体 foreach (var t in list) { if (t.Text == T1.Text) return true; } list.Add(T1); return false; } } }
调用如下:
不带参数的构造函数
Customer.AddCustomer customer = Common.FormSingle<Customer.AddCustomer>.GetForm(new Customer.AddCustomer()); customer.MdiParent = this;//Mdi窗体 customer.WindowState = FormWindowState.Maximized;//最大化 customer.Show(); customer.Activate();
带参数的构造函数
Customer.AddCustomer customer = Common.FormSingle<Customer.AddCustomer>.GetForm(new Customer.AddCustomer(customerid)); customer.MdiParent = this; customer.WindowState = FormWindowState.Maximized; customer.Show(); customer.Activate();
更多关于C#相关内容感兴趣的读者可查看本站专题:《WinForm控件用法总结》、《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。
本文向大家介绍WinForm窗体间传值的方法,包括了WinForm窗体间传值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了WinForm窗体间传值的方法。分享给大家供大家参考。具体实现方法如下: 窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 1.公共静态变量; 2.使用共有属性; 3.使用委托与事件; 4.通过构造函数把主窗体传递到从窗体中;
本文向大家介绍winform实现创建最前端窗体的方法,包括了winform实现创建最前端窗体的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了winform实现创建最前端窗体的方法。分享给大家供大家参考。具体实现方法如下: 一、需求: 1).需要这个窗体始终处于前端而且可用 2).在主窗体打开其他模态窗体的时候,这个Form也要处于活动状态。 注意: 设置了Form的 TopMost
本文向大家介绍winform简单缓存类实例,包括了winform简单缓存类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了winform简单缓存类。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍winform实现拖动文件到窗体上的方法,包括了winform实现拖动文件到窗体上的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了winform实现拖动文件到窗体上的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍C# WinForm实现窗体上控件自由拖动功能示例,包括了C# WinForm实现窗体上控件自由拖动功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C# WinForm实现窗体上控件自由拖动功能。分享给大家供大家参考,具体如下: 说明:首先在窗体上放一个PictrueBox控件,命名为pb1,拖动完整代码如下: 更多关于C#相关内容感兴趣的读者可查看本站专题:《Win
本文向大家介绍WinForm实现拦截窗体上各个部位的点击特效实例,包括了WinForm实现拦截窗体上各个部位的点击特效实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了WinForm实现拦截窗体上各个部位的点击特效,是一个非常实用的技巧。分享给大家供大家参考。具体分析如下: 一般来说,windows窗体的标题栏无法直接通过一些默认的事件来控制,需要了解和WM_NCHITTEST相关的wi