winform 窗体加载的问题,C#里不同Panel中窗体的调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform 窗体加载的问题,C#里不同Panel中窗体的调用相关的知识,希望对你有一定的参考价值。

窗体不能既是 MDI 子级,又是 MDI 父级
如图,有3个窗体form1在panel1中,form2在panel2中,form3 在panel3中 (在panel2右边),其中form1的按钮控制 form2和form3的加载 ,form2中的按钮控制form3的加载
代码(form1 中):
form2 frmSchedule = new form2();
frmSchedule.MdiParent = this;
panel2.Controls.Clear();
panel2.Controls.Add(frmSchedule);
frmSchedule.Dock = DockStyle.Fill;
frmSchedule.Show(); 没什么问题 ,但到了 form2 中就有出题了

form3 frmSchedule = newform3();

frmSchedule.MdiParent = this;
panel1.Controls.Clear();
panel1.Controls.Add(frmSchedule);
frmSchedule.Dock = DockStyle.Fill;
frmSchedule.Show();

怎么都出错,不是报MDI 容器窗体必须位于顶层就是报窗体不能既是 MDI 子级,又是 MDI 父级 的错误 , 都是换成独立的 panel,在form2中又找不到主窗体(就是父窗体中的panel 这个控件),折腾了1晚上实在搞不定啊,望哪位能帮帮小弟啊

参考技术A 很明白啊 你的form2既是form1的子窗体 又是form3的父容器 这就会报错
你添加form2为form1的子窗体时 后面架子啊form3的代码还未执行 所以不会报错
再加载form3时候 form2已经是某个窗体(form1)的子窗体了 因此form2就不能是mdi父容器了 所以就报错了
你要做成什么效果说出来 也许是你的实现思路有问题 一般情况不会再子窗体中再添加子窗体的追问

我做了调整了,panel2和panel3同属主窗体了,现在是panel2中的按钮如何控制panel3中窗体的变化了

追答

同form1按钮控制form2相同呀 真心不知道你要干嘛~~~~~也不好给你具体的意见

参考技术B 看了半天,不知道楼主你的需求是什么?

以上是关于winform 窗体加载的问题,C#里不同Panel中窗体的调用的主要内容,如果未能解决你的问题,请参考以下文章

在C#的winform中,如何快速加载窗体,避免控件的背景图片闪烁?

C# 里winform窗体颜色怎么设置?

C# winform加载子窗体很慢 如何用进度条显示

C#winform怎样等所有控件加载完再显示窗体?C#透明窗体显示时闪现黑块怎么解决?

C#winform怎样等所有控件加载完再显示窗体?C#透明窗体显示时闪现黑块怎么解决?

请教c# winform,权限设计问题