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

文章目录

  • 一、窗体的弹出
  • 二、窗体的嵌入

一、窗体的弹出

这里面我们以Windows窗体应用程序为例,这里面达到的效果如下:
在这里插入图片描述
点击指定按钮,弹出目标窗口。接下来我们看具体操作:
这是我们的主窗体:
在这里插入图片描述
接下来我们需要在这个主窗体所属的项目中右击添加一个窗体:
在这里插入图片描述
这里面设置窗体为我们想要的样子,设置窗体名字为FrmWafers.cs:
在这里插入图片描述
双击主窗体上想要触发弹出窗体的按钮,进行命令设置,只需要输入两行命令就完成了,只需要知道弹出窗体的名字就行:

 FrmWafers objFrm = new FrmWafers();//弹出窗口
            objFrm.Show();

二、窗体的嵌入

在这里插入图片描述
我们这次需要在按钮之后把之前提到的窗体嵌入到五角星区域,那么按完按钮之后就是这种效果:
在这里插入图片描述
仍然是双击按钮去到程序设置的地方,输入以下程序:

 foreach (Control item in this.spContainer.Panel2.Controls)
            {
                if (item is Form)
                {
                    Form objControl = (Form)item;
                    objControl.Close();
                }
            }
             objFrm.TopLevel = false;//将子窗体设置成非顶级控件
            objFrm.WindowState = FormWindowState.Maximized;//让子窗体最大化显示
            objFrm.FormBorderStyle = FormBorderStyle.None;//去掉窗体的边框
            objFrm.Parent = this.spContainer.Panel2;//指定子窗体显示的容器
            objFrm.Show();
            

这样就完成了,接下来详细解释一下,这段程序:

foreach (Control item in this.spContainer.Panel2.Controls)
{
    if (item is Form)
    {
        Form objControl = (Form)item;
        objControl.Close();
    }
}

这一部分代码遍历spContainer.Panel2.Controls集合中的所有控件。spContainer是一个分隔容器控件(SplitContainer),它有两个面板(Panel1Panel2),此代码段关注的是Panel2中的控件,如果需要嵌入到其他地方,只需要把程序中的名称换一下。

  • foreach循环遍历Panel2中的每一个控件。
  • if (item is Form)这行代码检查当前控件是否是一个Form对象。在WinForms中,通常不会将一个Form实例作为另一个Form的控件,但在特殊情况下,例如当我们想在父窗体中嵌入一个子窗体时,是可以的。
  • 如果控件确实是一个Form实例,代码就将它转换为Form类型并调用Close()方法。这将关闭并销毁这个窗体实例。这样做是为了防止连续按下按钮重复打开窗口

接下来的部分:

objFrm.TopLevel = false; //将子窗体设置成非顶级控件
objFrm.WindowState = FormWindowState.Maximized; //让子窗体最大化显示
objFrm.FormBorderStyle = FormBorderStyle.None; //去掉窗体的边框
objFrm.Parent = this.spContainer.Panel2; //指定子窗体显示的容器
objFrm.Show();

这一部分代码负责配置和显示一个名为objFrmForm对象。

  • objFrm.TopLevel = false;这行代码将objFrm设置为非顶级窗体。在WinForms中,顶级窗体通常是指没有父窗体的独立窗体。如果我们想将一个窗体显示在另一个窗体内部,那么需要将其TopLevel属性设为false
  • objFrm.WindowState = FormWindowState.Maximized;设置窗体的状态为最大化,使其填满指定的父容器。
  • objFrm.FormBorderStyle = FormBorderStyle.None;移除窗体的边框,这样窗体就不会显示标题栏、控制按钮或边框。
  • objFrm.Parent = this.spContainer.Panel2;objFrm的父控件设置为spContainerPanel2,这意味着objFrm将作为嵌入的子窗体在Panel2中显示。
  • objFrm.Show();最后,调用Show方法来显示objFrm窗体。

综合来讲,这段代码就是关闭Panel2中的所有嵌入窗体(如果有的话),然后配置并显示一个新的嵌入式子窗体。这在制作多文档界面(MDI)或复杂布局的应用程序时常见的手段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/456071.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

表结构设计

三个范式: 一范式要求所有属性都是不可分的基本数据项;二范式解决部分依赖;三范式解决传递依赖。 真实的业务场景是工程实现,表结构设计做好以下几点就已经足够: 每张表一定要有一个主键(方法有自增主键…

285K Star,一个让开发变得更简单的 GitHub 项目

Hi,骚年,我是大 G,公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 导语 公共 API(Application Programming Interface&…

【框架学习 | 第六篇】SpringBoot基础篇(快速入门、自动配置原理分析、配置文件、整合第三方技术、拦截器、文件上传/下载、访问静态资源)

文章目录 1.SpringBoot简介1.1原有Spring优缺点分析1.1.1Spring优点1.1.2Spring缺点 1.2SpringBoot概述1.2.1SpringBoot解决上述Spring的缺点1.2.2SpringBoot特点1.2.3SpringBoot核心功能 2.SpringBoot快速入门2.1代码实现2.1.1创建Maven工程2.1.2添加SpringBoot的起步依赖2.1.…

HTML CSS入门:从基础到实践

🌐 HTML & CSS入门:从基础到实践 🎨 📖 引言 HTML和CSS是构建网页的基石。HTML(超文本标记语言)用于创建网页内容,而CSS(层叠样式表)则用于美化这些内容。无论你是…

【Python】成功解决NameError: name ‘cv2‘ is not defined

【Python】成功解决NameError: name ‘cv2’ is not defined 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您…

公众号怎么转移主体

公众号迁移有什么作用?只能变更主体吗?长期以来,由于部分公众号在注册时,主体不准确的历史原因,或者公众号主体发生合并、分立或业务调整等现实状况,在公众号登记主体不能对应实际运营人的情况下&#xff0…

单据分页的实现

单据分页的实现 1. AceWzcgfkjtMaintainProxy.java package nc.ui.jych.wzcgfkjt.ace.serviceproxy;import nc.bs.framework.common.NCLocator; import nc.itf.jych.IWzcgfkjtMaintain; import nc.ui.uif2.components.pagination.IPaginationQueryService; import nc.vo.jych.…

Python小设计

1. 五个PPT上的界面打印【print、input函数】 (1)英雄商城登陆界面 print(英雄联盟商城登录界面 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~…

请说一下卷积神经网络里的特征图和感受野怎么计算?VGG网络的特点?如何解释?

请说一下卷积神经网络里的特征图和感受野怎么计算? 特征图的计算 首先要明确什么是特征图? 特征图是卷积层输出的二维数组,每个元素表示一个特定区域的特征。特征图的大小取决于输入图像的大小、卷积核的大小、步幅(stride&…

无需编程技能:Python爬虫与数据可视化毕业论文代写服务

引言 作为一名在软件技术领域深耕多年的专业人士,我不仅在软件开发和项目部署方面积累了丰富的实践经验,更以卓越的技术实力获得了🏅30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定,也是对我的创新精神和专业承诺…

S4 Hana SD -信贷管理 - 02

2.3 给信贷控制范围分配公司代码 TCODE: SPRO 配置路径:IMG > 企业结构 > 分配 > 财务会计 > 给信贷控制区分配公司代码 配置路径截图: 公司:被分配的公司代码。 公司名称&城市:已在公司代码数据中维护。 CCAR:分配的信贷控制范围。 覆盖CC范围:如…

【C语言】C语言内存函数

👑个人主页:啊Q闻 🎇收录专栏:《C语言》 🎉道阻且长,行则将至 前言 这篇博客是关于C语言内存函数(memcpy,memmove,memset,memcmp)的使用以及部分的模拟实现 memcpy,memmove,memset,memc…

搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例,具体介绍各个目录情况并参照创建相关文件夹 1、创建项目后端 BigData-KongGuan …

Apache Paimon系列之:主键表

Apache Paimon系列之:主键表 一、主键表1.Bucket2.LSM Trees3.Compaction 二、数据分布1.固定Bucket2.动态Bucket3.正常动态Bucket模式4.跨分区更新插入动态存储桶模式 三、Merge Engine1.Deduplicate2.部分更新3.序列组4.聚合部分更新5.聚合6.Retract7.First Row 四…

【内存分布管理】new与malloc以及delede与delete[]的区别

文章目录 1.内存分布示意图(重要)2.判断以下程序中的变量在什么区域3.new和delete4.malloc和new的区别5.内存泄漏内存泄漏的分类:_CrtDumpMemoryLeaks() 函数如何避免内存泄漏 1.内存分布示意图(重要) 其中数据共享区也叫内存映射段,是高效的I/O映射方式…

【Python】成功解决ModuleNotFoundError: No module named ‘bs4‘

【Python】成功解决ModuleNotFoundError: No module named ‘bs4’ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望…

windows10+cpu+pycharm跑yolov5

1、安装anaconda和pycharm,安装方法参考: anaconda和pycharm安装(windows10 )-CSDN博客 2、创建yolov5环境,打开Anaconda Prompt命令打开cmd命令行窗口,如下所示: 输入:conda crea…

.net框架和c#程序设计第一次测试

一、html整体结构 首先&#xff0c;代码的一个整体结构&#xff0c;可以通过输入一个英文!来实现 加个备注&#xff1a; <!DOCTYPE html> <!-- 声明文档类型为 HTML --> <html lang"en"> <!-- 标识文档语言为英语 --> <head><met…

谷歌关键词优化#川圣SEO#蜘蛛池

baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; 谷歌关键词优化&#xff0c;也被称为谷歌搜索引擎优化 (SEO)&#xff0c;是一种策略&#xff0c;旨在提高网…

一个悄然崛起的AI开源项目!

众所周知&#xff0c;最近这半年AI相关的话题实在是火到出圈。尤其是生成式AI的流行&#xff0c;让我们普通人也可以近距离地接触和应用AI。这其中最典型的就是ChatGPT。 那除了ChatGPT&#xff0c;还有一个非常实用的领域&#xff0c;也是我们今天要讨论的话题&#xff0c;那…
最新文章