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