WinForm单例窗体用法实例
发布时间:2020-12-15 06:30:18 所属栏目:百科 来源:网络整理
导读:本篇章节讲解WinForm单例窗体。供大家参考研究具体如下: using System;using System.Collections.Generic;using System.Windows.Forms;using System.Text;namespace Common{ /// summary /// 窗体的单例模式 /// /summary /// typeparam name="T"
本篇章节讲解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#程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |