我们在使用Qt、Swing等框架时,一个重要的概念就是布局管理器(Layout Manager),布局管理器能够帮我们针对窗口长宽的改变动态适配控件的位置。然而,Winform由于设计的年代比较古老了,是没有这种机制的。
Winform中,实现布局管理有这么几种方式:
我们这里简单了解一下Anchor属性、Dock属性以及容器控件的使用。
我们向窗体上拖入一个控件,在右侧属性中可以找到Anchor和Dock属性的设置。
Anchor表示锚定到窗体,锚定的相对位置是窗体左上角;Dock表示停靠到窗体的某一边缘,它类似Swing中的BorderLayout
,能够实现东西南北中的布局形式。要注意,Anchor和Dock只能设置一个。
Anchor具有Top
、Left
、Bottom
、Right
四个属性,指定属性后在该方向上的位置会锚定。下面是一个锚定到左上角(12,12)的按钮:
无论我们怎么拖拽窗口,该按钮都不会相对窗体左上角改变位置。
选择Dock时,会弹出一个停靠边缘的选择,这个形状和我们熟知的BorderLayout很像。
下面时一个停靠到窗体底部边缘的按钮:
Winform具备一组容器控件,容器控件可以近似理解为Web开发中的<div>
,它一般都需要和Dock属性配合使用,并通过容器控件的层层嵌套来实现复杂的布局。
Panel:Panel是最简单的容器,没有什么额外的功能。
FlowLayoutPanel:FlowLayoutPanel即流式布局容器,它允许内部的控件从左向右排列,宽度不足时会自动换行。
TabelLayoutPanel:表格容器,每个单元格内可以放置一个控件。
GroupBox:相比Panel增加了边框和标题。
TabControl:选项卡容器。
SplitContainer:二分布局容器。