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. 你知道Golang的模板怎么用吗?带你了解动态文本的生成!

    Golang Template Go语言中的Go Template是一种用于生成文本输出的简单而强大的模板引擎.它提供了一种灵活的方式来生成各种格式的文本,例如HTML.XML.JSON等. Go T ...

  2. nodejs实现的一个简单粗暴的洗牌算法

    据说名字长别人不一定看得到 之前用python,自带shuffle用的还是超爽的: 去年6月份自己动手用nodejs写一个21点扑克游戏的后台时,就需要一个洗牌算法,于是简单粗暴的实现了一个. 贴出来 ...

  3. 一个关于 i++ 和 ++i 的面试题打趴了所有人

    前言 都说大城市现在不好找工作,可小城市却也不好招人. 我们公司招了挺久都没招到,主管感到有些心累. 我提了点建议,是不是面试问的太深了,在这种小城市,能干活就行. 他说自己问的面试题都很浅显,如果答 ...

  4. Fisher线性判别分析(二分类)

    LDA(Linear Discriminant Analysis)是一种经典的线性判别方法,又称Fisher判别 分析.该方法思想比较简单:给定训练集样例,设法将样例投影到一维的直线 上,使得同类样例 ...

  5. PAI-DSW常见问题

    PAI-DSW常见问题 更新时间:2023年6月5日 18:40:00 本文为您介绍PAI-DSW的相关问题. 什么是PAI-DSW? PAI-DSW实例如何挂载和使用自己的NAS文件系统? 如何在P ...

  6. python - view() + UpsamplingBilinear2d()

    import torch from torch import nn # view函数的-1参数的作用在于基于另一参数,自动计算该维度的大小 # view的第一个参数:2 代表的是batch 后面的2, ...

  7. 「Eolink Apikit 教程」API 异常监控-创建 API 监控

    API 监控能够确保 API 的稳定性.如果一个 API 出现故障或崩溃,它可能会导致整个应用程序无法正常工作.这对用户和业务来说可能是灾难性的.通过监控 API,开发团队可以及时发现问题并采取措施来 ...

  8. react,es6的括号问题

    JavaScript 会自动给行末添加分号.如果 return 后面换行不加括号就会变成 return;. 就是说因为jsx语句跨行了,如果写在一行是可以省略小括号的. const About = ( ...

  9. JavaScript 语法:变量、数据类型及数据类型转换

    作者:WangMin 格言:努力做好自己喜欢的每一件事 变量 赋值变量用 var 关键字,情况如下: 1)先声明变量再赋值 var varName; varName="你好~"; ...

  10. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-25-处理单选和多选按钮-中篇

    1.简介 上一篇中宏哥讲解和介绍的单选框有点多,而且由于时间的关系,宏哥决定今天讲解和分享复选框的相关知识. 2.什么是单选框.复选框? 单选按钮一般叫raido button,就像我们在电子版的单选 ...