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

转载于:https://www.cnblogs.com/jerrychenfly/archive/2010/11/17/1879695.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值