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;
            }
        }
  • 相关阅读:
    BSGS模板(互质与不互质) 洛谷P4195、P3846
    整除分块(数论分块)
    洛谷P3327 [SDOI2015]约数个数和——莫比乌斯反演
    模块二
    模块
    二分法 匿名函数
    3.26作业
    函数的递归调用
    yield表达式 三元表达式
    3.25作业
  • 原文地址:https://www.cnblogs.com/feihusurfer/p/4330443.html
Copyright © 2011-2022 走看看