winform父窗体实现多个子窗体只能显示一个 阳光穿透心脏的1/2处 2021-12-14 23:27 366阅读 0赞 # 一、前言 # 当一个父窗体中包含多个动能的时候可能会存在很多子窗体,那么当每个都去打开的时候就会都显示在父窗体上,这样给用户的视觉肯定很不舒服。所以当出现这种情况的时候肯定也会有解决方法,以下就是一种解决方法,供大家参考。 # 二、代码 # ## 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); # 三、效果展示 # ![20190704093106431.gif][] 参考:[https://blog.csdn.net/weixin\_34130269/article/details/85428571][https_blog.csdn.net_weixin_34130269_article_details_85428571] [20190704093106431.gif]: /images/20211214/3563ec3cae144e2bb7f24bf174e888f5.png [https_blog.csdn.net_weixin_34130269_article_details_85428571]: https://blog.csdn.net/weixin_34130269/article/details/85428571
还没有评论,来说两句吧...