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
布局是個熟練活兒,要熟悉不同的控件的布局屬性,靈活組合,就能達到想要的效果。