• 如何在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());  
            }

  • 相关阅读:
    三阶魔方公式
    XML解析GData、XMLParser
    xib_cell布局适配高度
    SizeClass
    Storyboard界面传值
    Masonry(第三方库)的使—代码实现屏幕适配
    UITableView
    AFNetworking网上加载数据及JSON解析
    UICollectionView
    OC面向对象-多态
  • 原文地址:https://www.cnblogs.com/jerrychenfly/p/1879695.html
Copyright © 2020-2023  润新知