C#怎么把另一个窗体在主窗体的panel里显示

如题所述

VS.NET所谓的窗体是一个固定的桌面形式,单对于Winform来说可以作为forms,也可以作为userControl,完全可以把窗体作为一个userControl,实际上就是一样的东西,在里面画子窗体控件。
在主窗体就可以用panel作为容器去增加、删除、隐藏显示,代码很简单,过程千万不能想复杂了,不然强行使用反射的方法,把窗体硬生生嵌套在panel里,那就会触发重绘背景动作,引起整个桌面程序的闪烁,双缓冲也缓解不了这个问题,因为双缓冲是缓冲form容器自身。
所以,最简单使用的办法还是把子窗体做成自定义控件,就再也不要show了,不需要显示的你可以隐藏掉,显示隐藏就是切换动作,弹出窗口也可以交互自定义控件数据,并无影像任何效果,这是Control和容器的本意。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-09
首先将要作为控件的窗体的 TOPLEVEL属性设置为False
f1.TopLevel = false;
然后像添加普通控件一样加入到panel的controls里面就好
panel.Controls.Add(f1);追问

试过了,可是还是不行哦

追答

少了一句。。。
f1.Show();
然后呢。。如果像让F1像控件一样还要把F1的FormBorderStyle设置一下
f1.FormBorderStyle = FormBorderStyle.None;

追问

恩,好了,谢谢啦

本回答被提问者采纳
第2个回答  2011-10-09
没这功能啊
你用MDI窗体或TabControl控件多好啊。追问

TabControl控件的话要怎么用哦,新手不太懂啊

追答

就是选项卡控件啊
打开窗体设计
打开工具箱 > 容器 > TabControl 拖到窗体上
在把其他控件拖到 tabPageX中

C# 关于在panel中显示窗体的问题
首先,我们要知道,什么是标题栏,标题栏的本质是什么:其实就是在窗体上方显示窗体名称的一个panel,只是样子有点不同而已。那么解决方法自然而然就出来了,我们完全可以自己定义一个panel放到窗体的最上面,然后写上窗体的名字,再把样式设置成我们想要的样式就ok了啊!

虚心请教:C#怎么让另一个窗口显示在当前窗口的面板(panel)中
窗体(Form)是一种顶级容器, 需要将窗体的 TopLevel 设置为 false 后才能被嵌套在另一个容器中.Form2 form2 = new Form2();form2.TopLevel = false; \/\/ 这一步最重要, 去除子窗体的顶级窗体设置 form2.Parent = this.panel1; \/\/ 子窗体的父容器 form2.FormBorderStyle = FormBorderStyle....

c#panel内窗体控制panel切换另一个窗体
在 C# 中,可以使用 Panel 控件来实现在一个窗体中切换另一个窗体的效果。首先需要创建一个 Panel 控件,用来容纳其他的窗体。接下来,在点击按钮或执行其他操作时,使用 Panel.Controls.Clear() 方法清空 Panel 中的控件,然后使用 Panel.Controls.Add() 方法将新的窗体加入。public partial class Form...

C# 当单击菜单栏控件 在Panel控件中显示另外一个窗体
你可以拖拽一个控件到Panel中,然后搜索这个panel对象。看他是怎么添加的。然后你也添加对应的代码来添加另外一个窗体。

C#中子窗体在主窗体的Panel中显示,如何做成下图的效果
= FormBorderStyle.None;\/\/去除边框 form.TopLevel = false;\/\/让子窗体不置顶 form.WindowState = FormWindowState.Maximized;\/\/布满 this.panel1.Controls.Add(form);\/\/把窗体作为panel的Control去继承 form.Show();\/\/显示窗体 }}这样设置,...

C# 实现多个子窗体切换效果
首先,创建主窗体并在其中放置一个panel容器和按钮,用于控制切换。然后,新建用于在主窗体中显示的子窗体。这些子窗体是基于用户控件(Windows窗体)构建的,通过在状态栏中右击选择“添加”>“用户控件(Windows窗体)”来创建。接着,确保子窗体和panel容器的尺寸相匹配,以免显示时发生溢出。为区分不同子...

C#中在一个窗体中加了一个panel,隐藏后,怎么在另一个窗体中控制它显示...
1)在窗体Form1上有Panel控件panel1 2)Form1.cs(后台代码)using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{ public partial class ...

c#中如何让多个panel在一个form窗体中显示?
一个pannel不能做到,但是多个pannel的话,那么可以让他们重叠在一起 在相应的事件中可以设置他们的visible属性 若按1则pannel1 的visible为true pannel2的visible为fasle这样可以做个切换的功能

C# WPF 窗体切换
代码部分:首先定义两个窗体:form1和form2,然后在主窗体的右侧先绑定form1,接着点击form1上的按钮后,通过委托事件更改主窗体绑定的值。主窗体前台代码:这里通过RightTestView绑定窗体到主页面。后台cs代码:这里订阅了一个ShowNewWindow事件,触发后更改界面显示。窗体1后台代码:窗体2后台代码:效果...

c#winfrom里的panel2在另一个panel1中,如何完全显示
panel1的AutoScroll属性设置为true也不能完全显示,如果panel1的大小比panel2要小,肯定不能完全显示,你必需拖动滚动条。完全显示的前提条件是:panel1的尺寸必须>=panel2的尺寸.要么你动态改变pancel1.Size=panel2.Size.这样就ok了!

相似回答