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调整控件之间的距离。

初始界面

缩小窗体

最小

增加Margin

缺点:虽然自动调整了布局,但是控件大小无法随着窗体的改变而改变。

4. 网格布局(TableLayoutPanel)

用table的方式布局,类似于Html,可以跨行跨列。

  • 设计界面
    定义一个4行4列的布局,跨行。
    img

  • 运行效果
    img
    拉长后:
    img
    拉高后:
    img

效果显示button1边长了,button2和3没有变化,这个和coloumn的设置有关。
img

img
列2,列3采用了绝对值,同样对于行也有一样的设置,优先使用绝对值。

5. 卡片布局(TabPage)

拖动TabControl,放到窗体中,设置Dock为Fill。
img

6. 混合布局

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

posted @ 2025-11-19 09:50  huiy_小溪  阅读(17)  评论(0)    收藏  举报