WinForm是基于控件的,不像code+mark的架构,可以非常灵活的用mark来布局,它只能用控件布局属性和窗口控件来完成对UI的布局。
容器控件
有一组控件叫容器控件,对布局特别有作用,它们分别是:TableLayoutPanel:表格布局面板,每个单元格都可以用来作为其他控件的载体,通过设置行或列的是一个以行和列的大小型来确定每个单元格所占的大小
FlowLayoutPanel:流式布局面板,按照放上去的控件的顺序来依次呈现控件,可以通过修改FlowDirection来改烃排布的方向
Panel:普通的面板
SplitContainer:分隔面板,可以上下,或左右来布局这两个面板
TabControl:是半隐藏式的多面板容器控件,可以通过切换tab来显示对应的面板
GroupBox:分组面板,给面板加了一个标题
它们是作为其他控件的载体,用来形成一组,或一个区域的母板。
布局属性
Anchor:锚定属性,设置一个控件边缘锚定状态,默认为左上锚定
Dock:依靠属性,设置控件本身靠父容器控件的那个边缘依靠
Pading:控件本身内的控件距离边缘的距离
Migrain:距离周边控件的距离
AutoSize:是否是自动适应大于
AutoSizeMode:当AutoSize=true时有效,是控件的自动适应大小的模式,有只增的,有又增又减的
还有一些布局属性,相对好理解,就不一一说明了。
组合:
实现如下效果怎么做?
1、上部放置一个TableLayoutPanel控件,可以通过RowCount和ColumnCount来更改行列,通过编辑Columns和Rows中的大小类型为百分比,设置成一样的百分比。
2、每个单元格放Label,Dock=Left,再放TextBox,Dock=File,或者Archor=Top,Bottom,Left,Right
3、下部放DataGridView,Dock=Fill
这样布局就能和所在窗体缩放时跟随。
实现如下效果怎么做?
1、上部放置一个FlowLayoutPanel
2、在里面放置一个Panel,再在Panel中放Label,Dock=Left,再放TextBox,Dock=File,或者Archor=Top,Bottom,Left,Right
3、重复三次第2步
4、下部放DataGridView,Dock=Fill
布局是个熟练活儿,要熟悉不同的控件的布局属性,灵活组合,就能达到想要的效果。