winform入门篇 第六章 -- 布局器

布局器

布局器 LayoutEngine:负责子控件的布局

默认地,一个Form 或Panel都自带了一个布局器

在窗口改变大小时,由窗口的布局器来负责调整布局

在官方文档中,搜索Panel 在底部属性中,能找到LayoutEngine
在这里插入图片描述

自定义的布局器

SimpleLayoutPanel:自定义一个Panel,并自己实现-个LayoutEngine 。
观察代码。。

在这里插入图片描述
在这里插入图片描述

自定义的布局器

自定义布局器的 使用步骤:
1 工具I选项,Windows窗体设计器|常规
自动填充工具箱:设为True
在这里插入图片描述
在这里插入图片描述

2 添加自定义Panel或Control的类

在这里插入图片描述

3 生成解决方案 F7
在这里插入图片描述

4 重新打开Form1.cs,在工具箱界面可以看到自己的控件

在这里插入图片描述

直接拖动过来就可以使用
在这里插入图片描述

将其他控件拖入到该布局器中,发现他按照一定的规则自动布局了

在这里插入图片描述
可以给自定义panel添加一些间距属性
在这里插入图片描述

运行

在这里插入图片描述

小结

了解布局器 LayóutEngine 的作用会使用自定义的布局器,知道怎么显示到工具箱中
注 : 不要求自己会写一个布局器

FlowLayoutPanel

FlowLayoutPanel,流式布局
子控件依次排列,一行排满之后换行继续排。

演示:。。

在这里插入图片描述

填满一行后,换行排列

在这里插入图片描述
在这里插入图片描述

缩放这个布局器,发现他会自动调整

在这里插入图片描述

更多练习

练习:
1 布局的嵌套
flowLayoutPanel本身也是控件,也有Anchor/Dock属性

设置为停靠在上方

在这里插入图片描述
在这里插入图片描述

运行项目,调整窗口大小,发现他会自动调整 布局器里面的控件(超过一行,自动排列到下方)

在这里插入图片描述
在这里插入图片描述

2 属性的设置
试着设一下 Padding 等属性

在这里插入图片描述

3 控件的选择
右键,选择控件或该控件所在的面板

右键button2的时候,你相当于同时选中 按钮、panel、 form;
在这里插入图片描述

要点与细节

1 注意 FlowLayoutPanel本身不是布局器,它只是一个面板。是它内部实现了一个布局器。

TableLayoutPanel

TableLayoutPanel,
表格布局以表格的形式进行布局。。
演示:。

在这里插入图片描述
右键点击,可以添加 行 或 列
在这里插入图片描述

练习:(以单行表格为例)

在这里插入图片描述
也可 右键 属性 选择布局下的 Rows
在这里插入图片描述
在这里插入图片描述

1增加列、删除列

在这里插入图片描述
在这里插入图片描述

2设置列的属性列的宽度:

-绝对值(固定大小)
-百分比(占据剩余空间的百分比)
-自动大小(根据所需的空间自动分配)

第一列设置为 固定值 100px

在这里插入图片描述

第二列 占用50%

在这里插入图片描述
第三列 50%
在这里插入图片描述
第二、三列50%的意思是,排除了第一列的100px,剩下的 各取50%

在这里插入图片描述
设置dock 停靠
在这里插入图片描述
拖动窗口,发现第一列没有变换,它为固定100px ,第二三列为动态调整的,各占剩下宽度的50%

自动调整大小的意思是,根据列里面放的控件大小 自动调整。

演示:使用TableLayoutPanel来布局界面

1 添加 TableLayoutPanel,停靠在上方

在这里插入图片描述

2 添加 Button,TextBox到表格,设置列的宽度

在这里插入图片描述
在这里插入图片描述
第一个设置为100%,第二列设置为自动调整大小
在这里插入图片描述
在这里插入图片描述

3 添加 PictureBox,停靠在中央

在这里插入图片描述

停靠在中间

在这里插入图片描述

在属性,外观中,添加背景色
在这里插入图片描述

4 设置 TextBox的Dock,填满单元格

在这里插入图片描述
在这里插入图片描述
运行
在这里插入图片描述
当我们调整窗口大小的时候,文本框 总是占满剩余空间
在这里插入图片描述

要点与细节

1表格中的控件也可以设置Dock属性
如何利用 Dock属性,其规则是由布局器决定的

AfDockLayout

至此,已经学了三种自带的布局器:
1 默认布局(Anchor, Dock)
2 FlowLayoutPanel
3 TableLayoutPanel
对于初学练习来说,已经够用。但在项目中,还不够。

比如,默认的Dock停靠布局并不好用

演示对比:

第一种情况:先Left后Fill
添加panel ,添加两个按钮,设置dock, 先left ,再Fill
在这里插入图片描述
此时是正常的,各占据了一部分

第二种情况:先Fill 后Left
在这里插入图片描述
此时拖动,button2大小,button1并不会变换。

最终的布局效果依赖于控件添加的顺序,非常不方便

AfDockLayout:是对默认Dock布局的优化版

演示:

1 添加 Af.Winform.DockLayout.cs 到项目

因为是自定义的
自己复制到项目中,再重新生成解决方案,关闭重新打开Form1.cs
在这里插入图片描述

2 重新生成项目

在这里插入图片描述

3 在工具箱里找到 AfDockLayout,添加到布局

在这里插入图片描述

4在面板中添加子控件,设置Dock

添加一个button, 设置Dock 占据整个空间
在这里插入图片描述
再添加一个button,占据左部分空间
在这里插入图片描述
此时发现他们之间是分明的
在这里插入图片描述
再添加一个,停靠于上层

在这里插入图片描述
此时左上角,有个空缺

5 设置AfDockLayout.DockFlags属性

在这里插入图片描述
属性,设置DockFlags
在这里插入图片描述
在这里插入图片描述

AfDockLayout 的特点:

1 支持上、下、左、右、中位置,顺序无关
2 支持各个控件的 Margin
3 支持设置容器本身的Padding

相关推荐

  1. winform布局

    2024-04-11 13:52:02       55 阅读
  2. Linux

    2024-04-11 13:52:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 13:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 13:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 13:52:02       87 阅读
  4. Python语言-面向对象

    2024-04-11 13:52:02       96 阅读

热门阅读

  1. 【SQL】mysql数学函数功能介绍并举例

    2024-04-11 13:52:02       35 阅读
  2. python之迭代

    2024-04-11 13:52:02       34 阅读
  3. 七彩之城的独特序列(蓝桥杯)

    2024-04-11 13:52:02       42 阅读
  4. SpringCloudAlibaba-整合gateway(五)

    2024-04-11 13:52:02       38 阅读
  5. opencv使用滑动窗口提取GLCM特征做svm图像分类

    2024-04-11 13:52:02       32 阅读
  6. uniapp实现文件和图片选择上传功能实现

    2024-04-11 13:52:02       35 阅读
  7. Linux 系统如何设置免密登录

    2024-04-11 13:52:02       38 阅读
  8. 山东济南教育投稿邮箱与投稿信箱

    2024-04-11 13:52:02       36 阅读
  9. PaddleOCR 图片日期识别

    2024-04-11 13:52:02       34 阅读