zoukankan      html  css  js  c++  java
  • 如何在C#的MDI窗体中同样的子窗体只显示一次

    /// <summary>
    /// 打开窗体
    /// </summary>
    /// <param name="mdiChildTypeString"></param>
    /// <returns></returns>     private void ShowWindow(string mdiChildTypeString)
    {

         Form currentMdiChild
    = null;

        
    if (!IsMDIChildFormExist(mdiChildTypeString))
         {
             Assembly assembly
    = Assembly.GetExecutingAssembly();
             Type typForm
    = assembly.GetType(mdiChildTypeString);

            
    //关于InvokeMember用法,不明白的可以查看:http://msdn.microsoft.com/zh-cn/library/de3dhzwy(VS.80).aspx
             Object mdiChild = typForm.InvokeMember(
                
    null,
                 BindingFlags.DeclaredOnly
    | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance,
                
    null,
                
    null,
                
    null);

            
    if (mdiChild != null)
             {
                 currentMdiChild
    = mdiChild as Form;
                 currentMdiChild.MdiParent
    = this;
                 currentMdiChild.WindowState
    = FormWindowState.Maximized;
                 currentMdiChild.Show();
                 currentMdiChild.Focus();
             }

         }

    }

    /// <summary>
    /// 检查MDI子窗体是否存在
    /// </summary>
    /// <param name="mdiChildTypeString"></param>
    /// <returns></returns>        
    private bool IsMDIChildFormExist(string mdiChildTypeString)
    {
         Form currentMDIChild
    = null;
        
    foreach (Form mdiChildFrm in this.MdiChildren)
         {
            
    if (mdiChildFrm.GetType().ToString() == mdiChildTypeString)
             {
                 currentMDIChild
    = mdiChildFrm;
                
    break;
             }
         }

        
    if (currentMDIChild != null)
         {
            
    if (currentMDIChild.WindowState == FormWindowState.Minimized)
             {
                 currentMDIChild.WindowState
    = FormWindowState.Normal;
             }
             currentMDIChild.TopMost
    = true;
             currentMDIChild.Activate();
             currentMDIChild.Focus();
            
    return true;
         }
        
    else
         {
            
    return false;
         }

    }

    //调用方法如下

     private void toolStripButton1_Click(object sender, EventArgs e)
            {
                ShowWindow(typeof(Form1).ToString());          
               
            }

    private void toolStripButton2_Click(object sender, EventArgs e)
            {
                ShowWindow(typeof(Form2).ToString());  
            }

  • 相关阅读:
    写给理工科人看的乐理(一)声学基础
    魔方最少记忆还原法
    甲乙两人互猜数字(鬼谷子问题)的逻辑推理与算法建模
    模板元编程实现素数判定
    UVa OJ 194
    UVa OJ 175
    UVa OJ 197
    UVa OJ 180
    UVa OJ 140
    判断input或者div.span等标签是否存在
  • 原文地址:https://www.cnblogs.com/jerrychenfly/p/1879695.html
Copyright © 2011-2022 走看看