界面布局

我们在使用Qt、Swing等框架时,一个重要的概念就是布局管理器(Layout Manager),布局管理器能够帮我们针对窗口长宽的改变动态适配控件的位置。然而,Winform由于设计的年代比较古老了,是没有这种机制的。

Winform中,实现布局管理有这么几种方式:

  1. 无视布局管理,直接用Visual Studio拖绝对布局
  2. 使用Anchor锚属性实现简单的动态布局适配
  3. (推荐)使用Dock属性实现动态布局适配,此外Dock常搭配容器控件一起使用

我们这里简单了解一下Anchor属性、Dock属性以及容器控件的使用。

设置Anchor和Dock属性

我们向窗体上拖入一个控件,在右侧属性中可以找到Anchor和Dock属性的设置。

Anchor表示锚定到窗体,锚定的相对位置是窗体左上角;Dock表示停靠到窗体的某一边缘,它类似Swing中的BorderLayout,能够实现东西南北中的布局形式。要注意,Anchor和Dock只能设置一个。

Anchor

Anchor具有TopLeftBottomRight四个属性,指定属性后在该方向上的位置会锚定。下面是一个锚定到左上角(12,12)的按钮:

无论我们怎么拖拽窗口,该按钮都不会相对窗体左上角改变位置。

Dock

选择Dock时,会弹出一个停靠边缘的选择,这个形状和我们熟知的BorderLayout很像。

下面时一个停靠到窗体底部边缘的按钮:

容器控件

Winform具备一组容器控件,容器控件可以近似理解为Web开发中的<div>,它一般都需要和Dock属性配合使用,并通过容器控件的层层嵌套来实现复杂的布局。

Panel:Panel是最简单的容器,没有什么额外的功能。

FlowLayoutPanel:FlowLayoutPanel即流式布局容器,它允许内部的控件从左向右排列,宽度不足时会自动换行。

TabelLayoutPanel:表格容器,每个单元格内可以放置一个控件。

GroupBox:相比Panel增加了边框和标题。

TabControl:选项卡容器。

SplitContainer:二分布局容器。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap