多例模式,保证实例的唯一性,仅适用于form窗体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace PubClass { /// <summary> /// 文件名:PublicClass /// 文件功能描述:同一界面某些共同操作的类 /// 版权所有:Copyright (C) /// 创建日期:2013.8.7 /// 创建人:李东波 /// 修改日期:2013.08.21 /// 修改描述:添加窗体多例模式控制 public class SingleForm { /// <summary> /// 多例模式,保证实例的唯一性,仅适用于form窗体 /// </summary> /// <typeparam name="T">窗体实例类型</typeparam> /// <param name="tag">占用窗体的tag属性,并且存储区分标识</param> /// <returns>成功返回true,失败返回false,失败后需要之后的程序创建窗体,并给窗体tag保存区分标识</returns> public static bool ActivateForm<T>( string tag) where T : System.Windows.Forms.Form { try { if (Application.OpenForms.Count > 0) { foreach ( var item in Application.OpenForms) { if (item.GetType().Equals( typeof (T))) { T adt = item as T; if (adt.Tag != null && adt.Tag.ToString().Equals(tag)) { adt.Activate(); return true ; } } } } return false ; } catch (Exception ex) { //throw new Exception(ex.Message); return false ; } } } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步