第二阶段Winform-4:MDI窗口,布局控件,分页
1_MDI窗口
(1)MDI是指将多控件窗体在同一窗体中打开,可以设置重叠打开,平捕打开等,MDI窗体(Multiple-Document Interface,多文档界面)用于同时显示多个文档。在项目中使用MDI窗体时,通常将一个MDI窗口窗体作为父窗体,父窗体可以将多个子窗体包容在它的工作区之中。
(2)
属性 | ||
---|---|---|
IsMdiContainer | 设置窗体是否为多文档窗体 | |
LayoutMdi() | 设置子窗体的排列方法 | Cascade:层叠排 TileHorizontal:水平平铺 TileVertical:垂直平铺 |
MdiChildren | 所有的子窗体 是一个Form数组 | |
form.GetType() | 获取form的类型 |
(3)
private void 打开窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{Child1 child1=new Child1();child1.MdiParent= this;//MDI父窗体child1.Show();Child2 child2 = new Child2();child2.MdiParent = this;child2.Show();
//设置子窗体的排列方法/* public enum MdiLayout{Cascade, //层叠排列TileHorizontal, //水平平铺TileVertical, //垂直平铺ArrangeIcons}*/LayoutMdi(MdiLayout.TileVertical);
}private void OpenChileForm(Form childForm)
{//this.MdiChildren 所有的子窗体 是一个Form数组foreach (Form form in MdiChildren){//form.GetType()获取form的类型,是否与child2相等,相等说明已经存在child2,不需要再次打开if (form.GetType() == childForm.GetType()){//给子窗体焦点form.Activate();return;}}//相等说明不存在child2,需要再打开childForm.MdiParent = this;childForm.Show();}
2_页面布局
(1)窗口样式的属性:可以用来更改图标、最大化窗口透明度
属性 | 说明 | |
---|---|---|
Icon | 更改图标样式(左上角图标) | |
MaximizeBox:true; | 显示右上角最大化按钮 | |
MinimizeBox:true; | 显示右上角最小化按钮 | |
ShowInco:true; | 显示左上角小图标 | |
ShowInTaskbar:ture; | 窗体显示在任务栏 | |
TopMost:ture; | 窗口置顶显示 | |
Opacity:100% | 整个窗口透明度 |
(2)窗体布局的属性:用来改变窗体的大小以及启动程序后窗体的显示位置
属性 | 说明 | |
---|---|---|
AutoScroll:true/false; | 如果控件超出窗口是 否自动显示滚动条 | |
AutoSize:true/false; | 窗口的范围是否会超出控件的大小 | |
MaximumSize:0,0; | 窗口可以拖曳的最大的大小 | |
MinimumSize:0,0; | 窗口可以拖曳的最小的大小 | |
Size:300,300; | 窗口打开时默认的大小 | |
StartPosition:centerScreen; | 窗口打开时默认桌面位置,居中 | |
WindowState:Maximized; | 默认打开窗口最大化。 |
3_布局控件
(1)流式布局(FlowLayoutPanel):这种布局管理器允许控件按照指定的方向(水平或垂直)自动排列。当控件数量增加或减少时,它们会自动填充可用的空间,从而形成流式布局。
https://www.yisu.com/ask/37648663.html
设置 流动方向 FlowDirection= LeftToRight(默认的) 从左到右 | TopDown 从上到下 RightToLeft 从右到左 ButtonUp 从下到上
换行模式 WrapContents =true 自动换行 |false 不换行
(2)网格布局(TableLayoutPanel)
TableLayoutPanel 控件可以创建一个网格,其中的单元格可以动态地调整大小以适应窗体或容器的大小变化。你可以在网格中放置控件,并指定它们所在的行和列。
【愚公系列】2023年11月 Winform控件专题 TableLayoutPanel控件详解-腾讯云开发者社区-腾讯云
(3)面板(Panel) SplitContainer
虽然面板本身不是一个布局管理器,但它可以作为容器使用其他布局管理器。例如,你可以在面板中使用流式布局或网格布局来组织内部的控件。
(4)分组 (GroupBox)
GroupBox 控件可以用来将一组相关的控件组合在一起,并提供一个标题。它也可以作为布局容器,通常会结合其他布局管理器使用。 自适应布局:
为了使控件能够根据窗体大小自动调整,你可以使用 Dock 属性来让控件填满整个容器(如窗体或面板),或者只占据容器的一侧。
4_分页 (TabControl)
(1)自定义布局(了解)
开发者也可以通过重写控件的 OnLayout 方法来实现自定义的布局逻辑,但这需要更多的编程技巧和对 WinForms 绘制周期的理解
(2)布局属性
属性 | 说明 | |
---|---|---|
Anchor | 锚定属性,设置一个控件边缘锚定状态,默认为左上锚定 | |
Dock | 依靠属性,设置控件本身靠父容器控件的那个边缘依靠 | |
Padding | 控件本身内的控件距离边缘的距离 | |
Migrain | 距离周边控件的距离 | |
AutoSize | 是否是自动适应大小 | |
AutoSizeMode | 当AutoSize=true时有效,是控件的自动适应大小的模式,有只增的,有又增又减的 |