MDI窗体的相关学习使用

1、设置MDI父窗体

在属性中找到IsMdiContainer选项,设置为True

2、添加MDI子窗体,在项目中依次选择添加->窗体,然后一直默认即可

添加后的项目目录(Form1为父窗口,Form2、Form3为子窗口)

3、在Form1.cs中,创建对应MDI子窗口的对象并调用显示出来

 1 namespace WindowsFormsApp1
2 {
3 public partial class Form1 : Form
4 {
5 public Form1()
6 {
7 InitializeComponent();
8 }
9
10 private void Form1_Load(object sender, EventArgs e)
11 {
12 Form form2 = new Form2();
13 form2.Show();
14 form2.MdiParent = this;
15 Form form3 = new Form3();
16 form3.Show();
17 form3.MdiParent = this;
18 }
19 }
20 }

保存运行后即可显示出所有子窗口。

4、将子窗口按照特定方式排列显示

所需控件(菜单和工具栏 -> Menu Strip)

在设计界面依次添加Items

将每个Items都双击依次,然后在Form1.cs文件中添加如下代码:

        private void 水平排列ToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
} private void 垂直排列ToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileVertical);
} private void 层叠排列ToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.Cascade);
}

完整Form1.cs代码:

 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Threading.Tasks;
9 using System.Windows.Forms;
10
11 namespace WindowsFormsApp1
12 {
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19
20 private void Form1_Load(object sender, EventArgs e)
21 {
22 Form form2 = new Form2();
23 form2.Show();
24 form2.MdiParent = this;
25 Form form3 = new Form3();
26 form3.Show();
27 form3.MdiParent = this;
28 }
29
30 private void 水平排列ToolStripMenuItem_Click(object sender, EventArgs e)
31 {
32 LayoutMdi(MdiLayout.TileHorizontal);
33 }
34
35 private void 垂直排列ToolStripMenuItem_Click(object sender, EventArgs e)
36 {
37 LayoutMdi(MdiLayout.TileVertical);
38 }
39
40 private void 层叠排列ToolStripMenuItem_Click(object sender, EventArgs e)
41 {
42 LayoutMdi(MdiLayout.Cascade);
43 }
44 }
45 }

关于  Form.cs  Form1.Designer.cs  Form1.cs[设计]  这三个文件的作用:

Form1.cs[设计]为前端界面设计器,和QT中的Designer相同,通过图形化界面设计应用的展示效果,简化前端的工作量。

Form1.Designer.cs则是通过设计器设置后的界面后,同步生成对应的前端代码存放文件,主要用于定义窗体的布局、控件的位置和属性等

Form.cs则是用于后端业务处理,实现复杂的逻辑和功能,包含了窗体类的代码逻辑,例如控件的初始化、事件处理等。

【C#】【WinForm】MDI窗体的更多相关文章

  1. Winform MDI窗体切换不闪烁的解决办法(测试通过)

    https://stackoverflow.com/questions/5817632/beginupdate-endupdate-for-datagridview-request SuspendLa ...

  2. Winform MDI窗体容器、权限、简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  3. Winform MDI窗体容器,权限以及简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  4. Winform MDI窗体容器 权限 简单通讯

    MDI窗体容器 权限  using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  5. 小菜学习Winform(四)MDI窗体(附示例)

    前言 在做winfrom项目的时候我们可能会用到嵌套窗体,就是说一个容器中有多个窗体,可以分别管理和应用这些窗体,.net中提供了一种机制就是MDI,可能大家都会用,这边就简单的介绍下. 简单应用 w ...

  6. C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

    一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下 ...

  7. winform(MDI窗体容器、权限设置)

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  8. 【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

    一.打印控件 第一步先把打印对象搞出来. - printDocument    打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次 ...

  9. Winform下去除MDI窗体边框

    做项目中间遇到了MDI窗体内边框的问题,经过苦苦寻找,最终得到了解决方案 在Main窗体中调用API // Win32 Constants ; ; private const int WS_BORDE ...

  10. winform学习(5)MDI窗体

    SDI窗体 single document interface 单文档界面,即单个简单的窗体 MDI窗体 multiple document interface 多文档界面(主窗体与子窗体的关系,避免 ...

随机推荐

  1. 发现了一个可以免费下载jar包的网站,所有jar包都有

    苦苦找不到项目所需要的jar包?发现了一个可以免费下载jar包的网站: https://jar-download.com/ 非常好用. 每个JAR文件都将从官方Maven存储库下载.通过下载所有Mav ...

  2. windows无法连接VMware虚拟机的linux

    遇到的问题:今天使用xshell连接虚拟机,无法连接. 解决过程: 1.测试ping, linux虚拟机能ping通windows主机,可是windows主机ping不通linux虚拟机. 2.查看v ...

  3. 2.12 PE结构:实现PE字节注入

    本章笔者将介绍一种通过Metasploit生成ShellCode并将其注入到特定PE文件内的Shell注入技术.该技术能够劫持原始PE文件的入口地址,在PE程序运行之前执行ShellCode反弹,执行 ...

  4. redis单机、主从、哨兵、集群以及redisson分布式锁

    1.搭建集群 Linux系统的Redis各版本下载路径:https://download.redis.io/releases/,建议下载5.0以上的版本,下载后进行解压安装 (1)单机版 安装环境 y ...

  5. Solution -「HNOI 2010」城市建设

    Description Link. 修改边权的动态 MST. Solution 讲清楚点. 修改边权的 MST,考虑对时间分治.设我们当前操作的操作区间是 \([l,r]\),直接暴力找 MST 是不 ...

  6. day01 java 数据类型

    数据类型   1. 数值型:整数类型 byte   short   int   long 浮点类型 double float 基本数据类型:2.字符型:char 3.布尔型:boolean    1. ...

  7. LeetCode 周赛上分之旅 #49 再探内向基环树

    ️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...

  8. 【知识杂谈#2】如何查看Linux的(本地与公网)IP地址与SSH服务的端口号

    1. 本地Ip地址查看 使用查看linux主机是否有net-tools dpkg -l net-tools 显示以下代码就说明已安装成功 ||/ Name Version Architecture D ...

  9. Langchain-Chatchat项目:1-整体介绍

      基于Langchain与ChatGLM等语言模型的本地知识库问答应用实现.项目中默认LLM模型改为THUDM/chatglm2-6b[2],默认Embedding模型改为moka-ai/m3e-b ...

  10. 如何编写难以维护的 React 代码?耦合通用组件与业务逻辑

    在众多项目中,React代码的维护经常变得棘手.其中一个常见问题是:将业务逻辑直接嵌入通用组件中,导致通用组件与业务逻辑紧密耦合,使其失去"通用性".这种做法使通用组件过于依赖具体 ...