时间:2021-05-20
本文实例讲述了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#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例汇总了WinForm项目开发中WebBrowser用法,希望对大家项目开发中使用WebBrowser起到一定的帮助,具体用法如下:1.[Permissi
本文实例讲述了WinForm窗体间传值的方法。分享给大家供大家参考。具体实现方法如下:窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方
本文实例讲述了winform实现创建最前端窗体的方法。分享给大家供大家参考。具体实现方法如下:一、需求:1).需要这个窗体始终处于前端而且可用2).在主窗体打开
本文实例分析了C#中登录窗体和欢迎窗体关闭方法。分享给大家供大家参考。具体分析如下:在c#的winform编程中,我们经常会做登录窗体或欢迎窗体,并把他们作为启
本文实例讲述了在类库或winform项目中打开另一个winform项目窗体的方法。分享给大家供大家参考。具体如下:一、问题:假设类库或winform项目为A,另