C# 窗体布局(学习笔记9)
1. 默认布局
把控件直接放到窗体上,设计时可用鼠标改变位置和大小,运行时只能通过代码去改变。
备注:做不到一点自适应,窗体或屏幕大小一旦改变,控件还是停留在原来地方。
2. 边界布局(Dock或Anchor)
利用属性(Dock或Anchor)来实现布局,Dock来设置控件的停靠方式,Anchor固定控件与窗体的距离。
这两种属性是互斥的,只能用其中的一种。
2.1 Dock
根据值来决定控件的停靠位置,并会随着窗体变化而发生长或高的变化。
- Top / Bottom
控件会停靠的窗体顶/底端。此时拉长窗体,控件也会跟着适应 - Left 或 Right
控件会停靠的窗体左/右端。此时拉高窗体,控件也会跟着适应
2.2 Anchor
- Top,Left
默认值是, 表示控件相对窗体的位置. - Top,Left,Right
此时拉长窗体,控件也会跟着变长。 - Top,Left,Right,Bottom
此时拉伸窗体(同时变长和变高),控件也会跟着变化。
备注:有一定的自适应能力,但是不能改变Top和Left。
3. 流式布局(FlowLayoutPanel)
Dock设置为Fill,窗体内控件会根据窗口的大小自动调整布局,但是控件自身的大小并不改变。
可以利用Margin调整控件之间的距离。
缺点:虽然自动调整了布局,但是控件大小无法随着窗体的改变而改变。
4. 网格布局(TableLayoutPanel)
用table的方式布局,类似于Html,可以跨行跨列。
-
设计界面
定义一个4行4列的布局,跨行。
![img]()
-
运行效果
![img]()
拉长后:
![img]()
拉高后:
![img]()
效果显示button1边长了,button2和3没有变化,这个和coloumn的设置有关。


列2,列3采用了绝对值,同样对于行也有一样的设置,优先使用绝对值。
5. 卡片布局(TabPage)
拖动TabControl,放到窗体中,设置Dock为Fill。

6. 混合布局
在开发时,很少只使用一种布局,往往是多种布局的混合,通过混合布局,可以构建出专业的界面。
下面这个界面使用了Panel和FlowLayout。

本文来自博客园,作者:huiy_小溪,转载请注明原文链接:https://www.cnblogs.com/huiy/p/19240483





浙公网安备 33010602011771号