zoukankan      html  css  js  c++  java
  • (转)Single Instance Form in a MDI application

    private void OpenForm<T>() where T : Form, new()
    {
        T frm = (T)new List<Form>(this.MdiChildren).Find(f => f is T) ?? new T() { MdiParent = this };
     
        frm.Show();
        frm.Focus();
    }
    View Code
    OpenForm<NewForm>();
    View Code

     另外的一种写法:

     public partial class MDIForm : Form
       {
          private Child1Form mChild1Form = null;
          private Child2Form mChild2Form = null;
     
          public MDIForm()
          {
             InitializeComponent();
          }
     
          private Form ShowOrActiveForm(Form form, Type t)
          {
             if (form == null)
             {
                form = (Form)Activator.CreateInstance(t);
                form.MdiParent = this;
                form.Show();
             }
             else
             {
                if (form.IsDisposed)
                {
                   form = (Form)Activator.CreateInstance(t);
                   form.MdiParent = this;
                   form.Show();
                }
                else
                {
                   form.Activate();
                }
             }
             return form;
          }
     
          private void newToolStripButton_Click(object sender, EventArgs e)
          {
             mChild1Form = ShowOrActiveForm(mChild1Form, typeof(Child1Form)) as Child1Form;
          }
     
          private void openToolStripMenuItem_Click(object sender, EventArgs e)
          {
             mChild2Form = ShowOrActiveForm(mChild2Form, typeof(Child2Form)) as Child2Form;
          }
       }
    View Code
  • 相关阅读:
    linux 删除乱码文件
    snprintf用法
    面试时经常问到的非技术性问题
    vector查找元素
    new 和delete
    python安装
    UIPickerView详解
    设置文本框左边显示的View
    字符串的分割??
    VC++异常捕获??
  • 原文地址:https://www.cnblogs.com/ywcz060/p/3470791.html
Copyright © 2011-2022 走看看