C#子窗体打开另一个子窗体显示在父窗体容器的最顶层,怎样处理“无法将顶级控件添加到控件”的问题

问题遇到的现象和发生背景

点击父窗体的按钮就会生成子窗体显示在父窗体的panel控件里,后点击的窗体会显示在最顶层
现在的问题是子窗体A在父窗体的panel里,然后A有个按钮,点击生成子窗体B,B也要显示在父窗体的panel里,
并且是最顶层

问题相关代码,请勿粘贴截图

//子窗体A打开子窗体B的方法
private void btnEdit_Click(object sender, EventArgs e)
{
FormMain formMain = (FormMain)FormMain.ActiveForm;
FormRegister formRegister = new FormRegister();
formRegister.TopLevel = true;
formRegister.Dock = DockStyle.Fill;
formRegister.Parent = formMain.pnlHost;
formMain.pnlHost.Controls.Add(formRegister);
formRegister.Show();
}

运行结果及报错内容

System.ArgumentException:“无法将顶级控件添加到控件。”

我的解答思路和尝试过的方法

将TopLevel 设置为false,可以成功打开,但是不是我想要的效果,设置为false后,新打开的子窗体B就会被直接被
之前打开过的子窗体A覆盖到最底层

我想要达到的结果

不清除已经打开的子窗体A,将子窗体B显示在最顶层

你不要去改TopLevel属性
你要的只是一个前后关系而已
只要你的窗体A不要设置TopLevel,B也不设置TopLevel,那么后打开的窗体本来就自然的在最前面
不可以有两个窗体都是TopLevel,那你就让它们都不是TopLevel不就行了

把窗体换成控件

同意楼上看法,将窗体封装成控件,加载控件时定义层级