Dock停靠
获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。
使用 Dock 属性定义控件在调整父控件大小时自动调整其大小的方式。 例如,设置Dock为DockStyle.Left使控件与父控件的左边缘对齐,与左边相邻的两边:顶部和底部也同时扩展到可以延伸到的最大区域,如果没有其他控件占据的话,就可以扩展到父控件的顶部和底部,如果有其他控件的话,延伸到其他控件即止。并在调整父控件大小时调整大小。 控件以 Z 顺序停靠,它是窗体上控件沿窗体的 Z 轴 (深度) 的视觉分层。
上面5个控件,分别按照图示设置各控件的停靠属性,我们可以得到如图的分布效果。上面的控件设置不论设置顺序如何,不影响最终显示效果。
运行后,无论父窗体如何调整大小,这些控件都会自动调整大小,以填充满整个窗体。
如上图所示,当没有设置停靠为Top控件存在时,左右两边设置为Left和Right的控件可以一直延伸到顶部。
如上图所示,如果没有左右两边设置停靠的控件占据位置,停靠设置为Bottom的控件可以占据底下整个父控件的宽度。
根据上图我们可以看出,一旦有左、右停靠的控件存在,则停靠底部的控件则会让出空间。
控件可以停靠到其父容器的一个边缘,也可以停靠到所有边缘并填充父容器。上面的布局很方便、简单。但是有时候并不是我们希望的布局,而且也不能在运行时调整区域大小、折叠等等。所以,我们想底下的分页导航可以占满整个窗体的宽度,那么我们就可以用其他容器控件来控制布局了。
Margin在设置了停靠属性的控件上不会影响控件与其容器边缘之间的距离。
注意:属性Anchor、Dock是互斥的。 一次只能设置一个,最后一个集优先。
那么我们如何用代码设置Dock停靠属性呢?
Vb.Net |
Dim tbl As SmGrid=Proj.CurrentSmGrid tbl.Dock=DockStyle.Bottom |
C# |
SmGrid tbl = Proj.CurrentSmGrid;
tbl.Dock=DockStyle.Bottom;
|