C#WinForm父级窗体内Panel容器中嵌入子窗体、程序主窗体设计例子

C#中实现窗体嵌套的方法以及打开子窗体的位置 在C#中实现窗体嵌套的方法目前我会两种方法 1.窗体之间的交互通过MDI窗体方式实现* MDI窗体的设置并不复杂,只需要将窗体的属性IsMdiContainer设置为true即可。可以直接在页面上设置,也可以通过代码进行设置 代码设置方法: private void OpenPanel_Load(object sender, EventArgs e) { this.IsMdiContainer = true; } private void 打印 阅读详情

C#WinForm父级窗体内Panel容器中嵌入子窗体、程序主窗体设计例子

在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点

主窗体窗体采用前面一篇博客设计扁平化窗体 

C#自定义Winform无边框窗体

主要思路

1 this.IsMdiContainer=true;//设置父窗体是容器
2 Son mySon=new Son();//实例化子窗体
3 mySon.MdiParent=this;//设置窗体的父子关系
4 mySon.Parent=pnl1;//设置子窗体的容器为父窗体中的Panel
5 mySon.Show();//显示子窗体,此句很重要,否则子窗体不会显示

窗体设计上中下结构,最顶部是导航栏,其次是Top窗体部分、中间是Center内容部分、最底部是bottom导航面板

可以专门写一个方法做显示窗体

/// <summary>
        /// 显示窗体
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="frm"></param>
        public void ShowForm(System.Windows.Forms.Panel panel, System.Windows.Forms.Form frm)
        {
            lock (this)
            {
                try
                {
                    if (this.currentForm != null && this.currentForm == frm)
                    {
                        return;
                    }
                    else if (this.currentForm != null)
                    {
                        if (this.ActiveMdiChild != null)
                        {
                            this.ActiveMdiChild.Hide();
                        }
                    }
                    this.currentForm = frm;
                    frm.TopLevel = false;
                    frm.MdiParent = this;
                    panel.Controls.Clear();
                    panel.Controls.Add(frm);
                    frm.Show();
                    frm.Dock = System.Windows.Forms.DockStyle.Fill;
                    this.Refresh();
                    foreach (Control item in frm.Controls)
                    {
                        item.Focus();
                        break;
                    }
                }
                catch (System.Exception ex)
                {
                    //
                }
            }
        }

子窗体静态字段

/// <summary>
        /// 子窗体界面单例元素
        /// </summary>
        public static Form1 form1 = null;
        public static Form2 form2 = null;
        public static Form3 form3 = null;
        public static Form4 form4 = null;
        public static Form5 form5 = null;

构造初始化窗体 这里每一个窗体都是一个单例保证窗体的唯一性

1             //实例化子窗体界面
2             form1 = Form1.GetIntance;
3             form2 = Form2.GetIntance;
4             form3 = Form3.GetIntance;
5             form4 = Form4.GetIntance;
6             form5 = Form5.GetIntance;

窗体单例

private static MainForm formInstance;
        public static MainForm GetIntance
        {
            get
            {
                if (formInstance != null)
                {
                    return formInstance;
                }
                else
                {
                    formInstance = new MainForm();
                    return formInstance;
                }
            }
        }

初始化按钮状态

private bool initButton()
        {
            try
            {
                this.button1.BackColor = Color.FromArgb(53, 66, 83);
                this.button2.BackColor = Color.FromArgb(53, 66, 83);
                this.button3.BackColor = Color.FromArgb(53, 66, 83);
                this.button4.BackColor = Color.FromArgb(53, 66, 83);
                this.button5.BackColor = Color.FromArgb(53, 66, 83);
                this.button6.BackColor = Color.FromArgb(53, 66, 83);
                this.button7.BackColor = Color.FromArgb(53, 66, 83);
                this.button8.BackColor = Color.FromArgb(53, 66, 83);
                this.button9.BackColor = Color.FromArgb(53, 66, 83);
                this.button10.BackColor = Color.FromArgb(53, 66, 83);
                this.button11.BackColor = Color.FromArgb(53, 66, 83);
            }
            catch (Exception ex)
            {
                return false;
            }
            return true;
        }

导航按钮单击切换事件

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                this.initButton();
                this.button1.BackColor = Color.FromArgb(95, 129, 174);
                Monitor.Enter(this.lockObj);
                if (!formSwitchFlag)
                {
                    formSwitchFlag = true;
                    this.ShowForm(pnlCenter,form1);
                    formSwitchFlag = false;
                }
                else
                {
                    return;
                }
            }
            catch (System.Exception ex)
            {
                //
            }
            finally
            {
                Monitor.Exit(this.lockObj);
            }
        }

最终展现效果图

程序源代码工程文件下载

小伙伴们直接去这里下载:

https://files.cnblogs.com/files/JiYF/GUIDesign.rar 

 

C# 使用Panel控件实现在一个窗体中嵌套另一个窗体 准备步骤:     1. 创建一个Windows应用程序     2. 把默认窗口的名字为Form1(如上图)     3. 创建一个Windows窗体,为Form2(如上图)     4. 在Form1窗口中增加一个按钮button,然后增加一个Panel,双击按钮在按钮里面写事件(如下图) 双击button按钮进入点击事件 添加下代码如图 private voi... 阅读详情

相关推荐

C#嵌入式窗体制作流程

全部代码如下:带封装{{{}/// 嵌入式窗体打开时,关闭之前打开的窗体,防止后续出现多次关闭{{}}/// 嵌入式窗体标准化设置的方法封装{//将子窗体设置为非顶级控件//将子窗体最大化//边框窗体去掉//设置控件的父容器}/// 修改密码{}/// 将添加成员窗口嵌入到FrmMain窗口中{#region ClosePreForm--重用--方法封装/*//首先判断容器中是否已经存在打开的子窗体。

qq_42384612的博客 1106

c#在主窗体panel 容器内嵌入另一个窗体(子窗体)的实现

主窗体: 子窗体: 把子窗体嵌入到主窗体的panel 右侧中: 代码: { public MainForm() { InitializeComponent(); } private void ClosePreForm() { foreach...

weixin_33869377的博客 2050

框架window窗体嵌套在tabControl中

把window窗体嵌套在tabControl中,累加的打开多个窗体

C#之如何把子窗体嵌入到主窗体中显示

C#之如何把子窗体嵌入到主窗体中显示 今天总结一下把子窗体嵌入到主窗体中显示的方法。当你点击一个Button显示子窗体时,往往子窗体都是单独弹出,而如果想要子窗体直接在主窗体上显示,这就需要将子窗体嵌入到主窗体中,方法如下: //在主窗体中实例化要显示的子窗体 private ChildForm cForm; public MainForm() { InitializeComponent();

Kevin_Sun777的博客 5824

从零构建NVENC编码器:一个游戏开发者的实战手册

本文详细介绍了如何从零构建NVENC编码器,特别针对游戏开发者提供实战指南。内容涵盖NVENC基础概念、DirectX纹理捕获、异步编码优化及高级特性配置,帮助开发者高效集成硬件编码技术到游戏引擎中,实现高性能游戏录制和直播功能。重点解析了NVIDIA专用编码芯片的优势与API使用技巧。

weixin_29292431的博客 366

Cadence仿真实战:从零构建高精度带隙基准电压源

本文是一份详细的Cadence仿真实战指南,指导读者从零开始构建高精度带隙基准电压源。文章首先解释了带隙基准电压源稳定输出电压的原理,然后逐步演示了在Cadence Virtuoso环境中如何搭建测试电路、测量关键温度系数、计算并搭建核心电路,并通过参数扫描和迭代调优来驯服温度漂移,最终实现低漂移的基准电压输出。

weixin_29207533的博客 244

C#WinForm父级窗体内Panel容器中嵌入子窗体

C#WinForm父级窗体内Panel容器中嵌入子窗体、程序主窗体设计例子 1 this.IsMdiContainer=true;//设置父窗体是容器 2 Son mySon=new Son();//实例化子窗体 3 mySon.MdiParent=this;//设置窗体的父子关系 4 mySon.Parent=pnl1;//设置子窗体的容器为父窗体中的Panel 5 mySon.Show();/...

WizradMyL的博客 2026

一文详解声码器

声码器(Vocoder)是语音信号处理领域的核心技术,其本质是通过“分析 - 参数化 - 合成” 的闭环流程,实现语音的高效编码、转换或生成。它不仅是早期语音通信的关键工具,更是现代 AI 语音技术(如 TTS、语音转换)的核心组件。以下从原理、技术分类、关键模块、应用及发展趋势展开详细解析。

weixin_41413777的博客 1356

c# 火狐浏览器怎么嵌入窗体中_C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子...

C#WinForm父级窗体内Panel容器中嵌入子窗体、程序主窗体设计例子在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点主窗体窗体采用前面一篇博客设计扁平化窗体主要思路this.IsMdiContainer=true;//设置父窗体是容器Son mySon=new Son();//实例化子窗体mySon.MdiParent=this;/...

weixin_39530833的博客 604

burpsuite抓取ios数据包

1:首先在burpsuite中设置 添加proxy listeners 2:电脑开热点,手机连接,把代理设为电脑的ip和代理的端口 3:在Safari浏览器中打开网址http://burp下载证书 4:打开设置->通用->描述文件与设备管理 5:设置->通用->关于本机->证书信任设置 之后就可以正常抓包了 ...

weixin_45682070的博客 2068

【AutoSAR】【WdgM】WdgM安全管理模块

一、WdgM在AutoSAR里的整体架构 WdgM是在autosar架构里位于服务层的一个基础软件模块;主要监督程序的执行; 主要包括三个模块: 看门狗管理器(WdgM) 看门狗接口(WdgIf) 看门狗驱动(Wdg) 二、三种监督机制 Alive监控-------主要监控周期性软件程序的时间 DeadLine监控-------主要监控非周期软件程序 程序流监控-------主要监控程序流执行的正确性 三、基于全局状态的检测流程 受监管实体(SE):Supervised Ent

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 2993

CWinForm窗体内Panel容器中嵌入子窗体程序主窗体设计例子:提升界面灵活性的高效解决方案

CWinForm窗体内Panel容器中嵌入子窗体程序主窗体设计例子:提升界面灵活性的高效解决方案 去发现同类优质开源项目:https://gitcode.com/ 在当今软件开发领域,用户界面的设计愈发受到重视。CWinForm窗体内Panel容器中嵌入子窗体程序主窗体设计例子项目,不仅提供了一个创新的设计思路,更是一种提升界面灵活性的高效解决方案。下面,就让我为您详细介绍一下这个项目的核心功能、...

gitblog_06716的博客 355

Claude Code 错误解决方案: Request Timed Out 超时 原因、配置与解决方案

Claude Code 抛出 Request Timed Out 不仅可 能是网络问题,更大概率是 API 高负载或超大响应导致。本文从 默认超时机制出发,拆解三种根因场景,给出 API_TIMEOUT_MS 环境变量调优与任务拆分策略,帮助开发者在保证稳定性的同时 避免误判网络故障。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 902

人形机器人 vs 机器狗SLAM:FAST_LIO_LOCALIZATION_HUMANOID的差异化优化方向

《FAST_LIO_LOCALIZATION_HUMANOID在人形与机器狗应用中的差异化优化策略》摘要: 格灵深瞳开源的FAST_LIO_LOCALIZATION_HUMANOID系统针对人形机器人和机器狗提出了差异化优化方案。人形机器人需应对双足步态带来的周期性晃动,通过动态盲区滤波、二阶运动模型补偿步态相位畸变,并修复重力向量计算误差。机器狗则需解决四足高频运动挑战,包括设计自适应地面分割算法、抑制IMU高频振动噪声,以及基于足端接触序列的非匀速运动建模。二者在传感器配置(高度/视角)、运动频率(1-

Studying…… 326

2025爬虫实战:某音直播间实时弹幕获取原理及源码分析

某音直播弹幕虽然没有直接挂在 DOM 上,但由于用的是西瓜播放器,弹幕是通过 JS 接口动态渲染的,这就给了我们 Hook 的机会。关键点是找到调用的位置,然后拦截并输出对象里的message字段。这个思路其实也适用于其他前端渲染的播放器,比如 B 站的 DPlayer、HLS.js、甚至很多自研播放器都有类似结构。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1820

C# WinForm技巧“将Form嵌入到Panel”

虽然有 TabControl控件, 但是为了减少主窗体的代码量, 可以将部分分页的功能模块放置于一个 Form 中, 当调用时, 直接把这个 Form嵌入到一个 Panel中即可. 示例如下: 要嵌入的 Form:     public partial class FormEmbed : Form    {        public FormEmbed()        {    ...

weixin_34301307的博客 110

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

父窗口和父类的一些理解

QWidget类是所有用户界面对象的基类,包括QMainWindow,QDialog等。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口

thinkZHU-的博客 1905

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C#子窗体嵌入主窗体

C#知识|上位机子窗体嵌入主窗体方法(实例) (qq.com)2024年5月27日。

anlog的专栏 1254

C# 主窗体中嵌入子窗体

1.创建一个Windows Form应用程序,默认主窗体为Form1。 2.在项目中再创建两个windows Form,分别命名为ChildForm1,ChildForm2。 3.在Form1中添加左右两个panel,左边用来放功能按钮name设置为menuPanel,右边用来显示子窗体name设置为contentPanel。 4.在左侧panel中添加两个按钮,并分别双击两个按钮在按钮里面写...

zcn596785154的博客 1万+

C#制作软件时窗体的弹出与嵌入

C#制作软件时窗体的弹出与嵌入

wanganqiqi的博客 2644
上一篇: C#自定义按钮、自定义WinForm无边框窗体、自定义MessageBox窗体
下一篇: C#二分查找算法设计实现
JiYF
博客等级 码龄11年 356粉丝 50原创
评论 54
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值