zoukankan      html  css  js  c++  java
  • 窗体单例问题

    方法1:泛型

    使用方法: frm材料类别维护 f = frmCreate<frm材料类别维护>.createFrom(this);

        public class frmCreate<T> where T : Form, new()
        {
            private static T instance;
            public static T createFrom(Form mdi)
            {
                if (instance == null || instance.IsDisposed)
                {
                    instance = new T();
                    instance.StartPosition = FormStartPosition.CenterScreen;
                    instance.MdiParent = mdi;
                    instance.Show();
                }
                instance.WindowState = FormWindowState.Normal;
                return instance;
            }
        }

    方法2:反射

    使用方法: Form f = frmCreateByName.createForm(this, "基础数据.frm材料类别维护");

        public class frmCreateByName
        {
            public static Form createForm(Form mdi, string frmName)
            {
                string className = frmName.Substring(frmName.IndexOf(".") + 1);
                //保证单例问题
                foreach (Form frm in Application.OpenForms)
                {
                    if (frm.Name.Equals(className))
                        return frm;
                }
                Assembly assembly = Assembly.GetExecutingAssembly();
                Form instance = assembly.CreateInstance("珠宝加工管理系统." + frmName) as Form;
                instance.StartPosition = FormStartPosition.CenterScreen;
                instance.MdiParent = mdi;
                instance.WindowState = FormWindowState.Normal;
                instance.Show();
                return instance;
            }
        }
  • 相关阅读:
    linux 、windows、mac、dns刷新
    Nginx日志切割及其各种服务日志随便切
    https是如何防劫持的
    梁启超-少年中国说
    mongodb-4.2-隋唐笔迹
    connection closed by foreign host
    磁盘类型查看
    魅力男神之解说
    jenkins 更新脚本之expect交互
    nginx 之特殊端口转目录访问
  • 原文地址:https://www.cnblogs.com/feihusurfer/p/4330443.html
Copyright © 2011-2022 走看看