C#怎么把另一个窗体在主窗体的panel里显示
3个回答
展开全部
VS.NET所谓的窗体是一个固定的桌面形式,单对于Winform来说可以作为forms,也可以作为userControl,完全可以把窗体作为一个userControl,实际上就是一样的东西,在里面画子窗体控件。
在主窗体就可以用panel作为容器去增加、删除、隐藏显示,代码很简单,过程千万不能想复杂了,不然强行使用反射的方法,把窗体硬生生嵌套在panel里,那就会触发重绘背景动作,引起整个桌面程序的闪烁,双缓冲也缓解不了这个问题,因为双缓冲是缓冲form容器自身。
所以,最简单使用的办法还是把子窗体做成自定义控件,就再也不要show了,不需要显示的你可以隐藏掉,显示隐藏就是切换动作,弹出窗口也可以交互自定义控件数据,并无影像任何效果,这是Control和容器的本意。
在主窗体就可以用panel作为容器去增加、删除、隐藏显示,代码很简单,过程千万不能想复杂了,不然强行使用反射的方法,把窗体硬生生嵌套在panel里,那就会触发重绘背景动作,引起整个桌面程序的闪烁,双缓冲也缓解不了这个问题,因为双缓冲是缓冲form容器自身。
所以,最简单使用的办法还是把子窗体做成自定义控件,就再也不要show了,不需要显示的你可以隐藏掉,显示隐藏就是切换动作,弹出窗口也可以交互自定义控件数据,并无影像任何效果,这是Control和容器的本意。
展开全部
首先将要作为控件的窗体的 TOPLEVEL属性设置为False
f1.TopLevel = false;
然后像添加普通控件一样加入到panel的controls里面就好
panel.Controls.Add(f1);
f1.TopLevel = false;
然后像添加普通控件一样加入到panel的controls里面就好
panel.Controls.Add(f1);
更多追问追答
追问
试过了,可是还是不行哦
追答
少了一句。。。
f1.Show();
然后呢。。如果像让F1像控件一样还要把F1的FormBorderStyle设置一下
f1.FormBorderStyle = FormBorderStyle.None;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没这功能啊
你用MDI窗体或TabControl控件多好啊。
你用MDI窗体或TabControl控件多好啊。
追问
TabControl控件的话要怎么用哦,新手不太懂啊
追答
就是选项卡控件啊
打开窗体设计
打开工具箱 > 容器 > TabControl 拖到窗体上
在把其他控件拖到 tabPageX中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询