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.hqwc.cn/news/537848.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一:R-CNN图文详解

学习视频:Faster-RCNN理论合集 概念辨析 在目标检测中,proposals和anchors都是用于生成候选区域的概念,但它们在实现上有些许不同。 Anchors(锚框): 锚框是在图像中预定义的一组框,它们通常以…

单据分页的实现

单据分页的实现 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.…

《系统架构设计师教程(第2版)》第6章-据库设计基础知识-03-关系数据库设计

文章目录 0. 设计的基本步骤0.1 用户需求分析0.2 概念结构设计0.3 逻辑结构设计0.4 物理结构设计0.5 数据库实施阶段0.6 数据库运行和维护阶段 1. 数据需求分析1.1 概述1.2 需要获取的需求 2. 概念结构设计2.1 概述2.2 E-R方法2.3 概念结构设计工作步骤2.3.1 选择局部应用2.3.2…

Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 该模型是一个真实模型,并且具有幻想和创意色彩。 作者述:我选取了…

阿里云-云服务器ECS新手如何建网站?

租阿里云服务器一年要多少钱? 不同类型的服务器有不同的价格。 以ECS计算型c5为例:2核4G-1年518.40元,4核8G-1年948.00元。 阿里云ECS云服务器租赁价格由三部分组成: 也就是说,云服务器配置成本磁盘价格网络宽带价格…

MBT-Net

feature F,edge feature E-F where r related to the relative position 辅助信息 作者未提供代码

STC89C52单片机 启动!!!(一)

跑马灯实现 直接上代码 #include<regx52.h> sbit D1P2^0; sbit D2P2^1; sbit D3P2^2; sbit D4P2^3; sbit D5P2^4; sbit D6P2^5; sbit D7P2^6; sbit D8P2^7; void delay(int num){while(num--){} } void led_running(){//从第1盏灯到第8盏灯依次点亮D10;delay(40000);D2…

Github主页设置贪吃蛇详细教程

先看最终实现结果&#xff1a; 有条贪吃蛇放在主页还是蛮酷的哈哈哈。接下来我来讲一讲怎么在Github主页添加一条贪吃蛇。 首先要修改自己的Github的主页&#xff0c;我们得有一个特殊的仓库——这个仓库必须与你的Github用户名保持一致&#xff0c;并且需要公开&#xff0c…

Database Connection Pool 数据库连接池-01-概览

拓展阅读 第一节 从零开始手写 mybatis&#xff08;一&#xff09;MVP 版本。 第二节 从零开始手写 mybatis&#xff08;二&#xff09;mybatis interceptor 插件机制详解 第三节 从零开始手写 mybatis&#xff08;三&#xff09;jdbc pool 从零实现数据库连接池 第四节 从…

QT c++ 双精度数拆分和组合 Tool

本文描述QT c的双精度数拆分和合并&#xff0c;即双精度浮点数拆为四个16位无符号整数以及将四个16位无符号整数组合为双精度浮点数。 开发平台&#xff1a;win10QT6.2.4 MSVC2019 64 bit 在本文的最好列出了代码和可执行文件打包下载链接&#xff08;可直接使用&#xff09;…

国创证券|炒股有哪八不碰?

炒股存在以下八不碰&#xff1a; 1、散户多的个股不碰 散户较多&#xff0c;则阐明市场上的散户在不断地买入该股&#xff0c;主力在不断地卖出该股&#xff0c;筹码逐步从主力的手中流入散户的手中&#xff0c;这会引起市场上的投资者惊惧&#xff0c;大量地抛出手中的股票&…

maven打包把所有依赖的jar copy到一个文件夹

在maven项目中&#xff0c;是使用依赖坐标来引入jar包&#xff0c;在引入jar包的时候&#xff0c;maven也会默默的帮助我们导入这个jar包所依赖的jar包。 但是当我们打包项目使用jar包运行的时候&#xff0c;往往会出现缺少jar的情况&#xff1a; 如果我们一个一个添加缺少的…