M-code 2022-08-08 17:30 采纳率: 40%
浏览 581
已结题

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显示在最顶层

  • 写回答

3条回答 默认 最新

  • 智能制造的码农 2022-08-09 09:07
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 8月8日

悬赏问题

  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused