winform父窗体实现多个子窗体只能显示一个

一、前言

当一个父窗体中包含多个动能的时候可能会存在很多子窗体,那么当每个都去打开的时候就会都显示在父窗体上,这样给用户的视觉肯定很不舒服。所以当出现这种情况的时候肯定也会有解决方法,以下就是一种解决方法,供大家参考。

二、代码

1.父窗体

        /// <summary>
        /// 使父窗体每次只能显示一个子窗体
        /// </summary>
        /// <param name="子窗体名称"></param>
        private void ChangeChildren(Form frm)
        {
            //判断是否第一次显示窗体
            if (this.MdiChildren.Length == 1)
            {
                frm.Show();
                return;
            }
            foreach (Form children in this.MdiChildren)
            {
                if (frm == children)
                {
                    //如果是现在就存在的子窗体就激活它
                    children.Activate();
                    break;
                }
                else
                {
                    //如果窗体不一样就关闭了,在显示现在所需要的
                    children.Close();
                    frm.Show();
                    break;
                }
            }

2.调用

在调用的时候会有不同的方法,在这里我用到了两个方法。

第一种:实例化子窗体,没有运用到单例模式。

 FrmRegister frmregister = new FrmRegister();
 //实现父窗体
 frmregister.MdiParent = this;
 ChangeChildren(frmregister);

第二种:运行单例模式。对这些子窗体实现单例,创建时只能出现一次。

 frmCancelCard frmcancelcard = frmCancelCard.GetInstance();
 frmcancelcard.MdiParent = this;
 ChangeChildren(frmcancelcard);

  三、效果展示

参考:https://blog.csdn.net/weixin_34130269/article/details/85428571

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值