演练:创建可根据数据输入需要调整大小的 Windows 窗体
能够正确调整大小的窗体可以提高您的用户界面的易用性。
此演练演示了如何创建当用户调整窗体大小时按比例调整的布局。 您将使用 TableLayoutPanel 控件实现一个接收联系人信息的数据输入窗体。
本演练涉及以下任务:
创建项目
创建布局面板
设置布局网格
创建“姓名”字段
创建“地址”字段
创建“电话号码”字段
创建“备注”字段
完成这些操作后,窗体应如下所示:
若要复制此主题中的完整代码列表,请参见如何:创建用于数据输入的大小可调的 Windows 窗体。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
系统必备
若要完成本演练,您需要:
- 足够的权限,以便能够在安装 Visual Studio 的计算机上创建和运行 Windows 窗体应用程序项目。
创建项目
第一步是创建应用程序项目。 使用此项目生成显示数据输入窗体的应用程序。
创建项目
- 创建名为 DemoDataEntryLayout 的 Windows 应用程序项目。 有关更多信息,请参见如何:创建新的 Windows 窗体应用程序项目。
创建布局面板
下一步是创建包含可调整大小的布局的布局面板。
创建布局面板
在**“窗体设计器”**中选择窗体。
从**“工具箱”**中将一个 TableLayoutPanel 控件拖到窗体上。
在**“属性”**窗口中,将 TableLayoutPanel 控件的 Dock 属性的值更改为 Fill。
将 ColumnCount 属性的值更改为 4,并将 RowCount 属性的值更改为 6。
设置布局网格
下一步是指定布局网格。 设置 ColumnStyles 和 RowStyles 集合中的属性以确定当窗体的尺寸改变时列和行如何调整大小。
设置布局网格
单击 TableLayoutPanel 控件的智能标记符号 () 并选择**“编辑行和列”以打开“列和行样式”**对话框。 有关更多信息,请参见 如何:在 TableLayoutPanel 控件中编辑行和列。
从**“显示”下拉框中选择“列”**。
选择第一列并将其 SizeType 属性的值更改为 Percent。 将**“百分比”**NumericUpDown 控件的值设置为 25。 此列将容纳 Label 控件。
选择第二列。 将其 SizeType 属性的值更改为 Percent。 将**“百分比”**NumericUpDown 控件的值设置为 50。 此列将容纳数据输入字段的 TextBox 控件。
选择第三列。 将其 SizeType 属性的值更改为 Percent。 将**“百分比”**NumericUpDown 控件的值设置为 25。 此列将容纳 Label 控件。
选择第四列。 将其 SizeType 属性的值更改为 Percent。 将**“百分比”**NumericUpDown 控件的值设置为 50。 此列将容纳数据输入字段的 TextBox 控件。
从**“显示”下拉框中选择“行”**。
对于前面五行,将 SizeType 属性的值设置为 Absolute,并将**“绝对”** NumericUpDown 控件的值设置为 28。 对于第六行,将 SizeType 属性的值设置为 Percent,并将**“百分比”** NumericUpDown 控件的值设置为 80。
单击**“确定”**接受更改。
用控件填充该布局
现在可以使用控件填充布局了。 此数据输入窗体是用于联系人信息的,所以它有“名”字段、“姓”字段、“地址”字段、“电话号码”字段和“备注”字段。 下面的列表显示了创建这些控件的顺序:
“姓名”字段
“地址”字段
“电话号码”字段
“备注”字段
创建“姓名”字段
姓名输入字段置于 TableLayoutPanel 控件的第一行。 它们由 Label 控件和 TextBox 控件(用于输入名)以及 Label 控件和 TextBox 控件(用于输入姓)组成。
创建“姓名”字段
将一个 Label 控件从**“工具箱”**拖到 TableLayoutPanel 控件中的第一个单元格中。
将 AutoSize 属性的值设置为 true。
将 Text 属性的值设置为“名”。
将一个 Label 控件从**“工具箱”**拖到第一行的第三个单元格中。 将 Label 控件的 Anchor 属性的值设置为 Right。 将 AutoSize 属性的值设置为 true。 将 Text 属性的值设置为“姓”。
将一个 TextBox 控件从**“工具箱”**拖到第一行的第四个单元格中。 将 TextBox 控件的 Anchor 属性的值设置为 Left、Right。
创建“地址”字段
“地址”字段占用第二、三、四行。 因为街道地址可能很长,所以 Address1 和 Address2 字段跨三列。
创建“地址”字段
将一个 Label 控件从**“工具箱”**拖到第二行的第一个单元格中。
在**“属性”**窗口中,将 Label 控件的 Anchor 属性的值设置为 Right。 将 AutoSize 属性的值设置为 true。 将 Text 属性的值设置为“地址 1”。
将**“ColumnSpan”**属性的值设置为 3。 此属性由 TableLayoutPanel 控件提供。 有关所提供的属性的更多信息,请参见扩展程序提供程序概述。
将一个 Label 控件从**“工具箱”**拖到第四行的第一个单元格中。
将 Label 控件的 Anchor 属性的值设置为 Right。 将 AutoSize 属性的值设置为 true。 将 Text 属性的值设置为“城市”。
将一个 Label 控件从**“工具箱”**拖到第四行的第三个单元格中。
将 Label 控件的 Anchor 属性的值设置为 Right。 将 AutoSize 属性的值设置为 true。 将 Text 属性的值设置为“州/省”。
将一个 ComboBox 控件从**“工具箱”**拖到第四行的第四个单元格中。
将 ComboBox 控件的 Anchor 属性的值设置为 Left。 将 FormattingEnabled 属性的值设置为 true。
创建“电话号码”字段
“电话号码”字段占用第五行。 若要确保用户仅输入有效电话号码,请使用 MaskedTextBox 控件来实现。
创建“电话号码”字段
将一个 Label 控件从**“工具箱”**拖到第五行的第一个单元格中。
在**“属性”**窗口中,将 Label 控件的 Anchor 属性的值设置为 Right。 将 AutoSize 属性的值设置为 true。 将 Text 属性的值设置为“工作电话”。
将一个 MaskedTextBox 控件从**“工具箱”**拖到第五行的第二个单元格中。
将 MaskedTextBox 控件的 Anchor 属性的值设置为 Left。
单击 MaskedTextBox 控件上的智能标记 () 以打开 Mask 编辑器。
在**“输入掩码”对话框中选择“电话号码”掩码。 单击“确定”**。
对“家庭电话号码”字段重复步骤 1 到 5。 将 Text 属性的值设置为“家庭电话”。
创建“备注”字段
最后一个字段占用第六行。 它用于输入备注并且允许任意形式的文本输入。
创建“备注”字段
将一个 Label 控件从**“工具箱”**拖到第六行的第一个单元格中。
在**“属性”**窗口中,将 Label 控件的 Anchor 属性的值设置为 Top、Right。 将 AutoSize 属性的值设置为 true。 将 Text 属性的值设置为“备注”。
将一个 RichTextBox 控件从**“工具箱”**拖到第六行的第二个单元格中。
将**“ColumnSpan”**属性的值设置为 3。
将 RichTextBox 控件的 Dock 属性的值设置为 Fill。
完成布局网格设置
最后一步是完成布局网格设置。 第一列和第三列应设置为 AutoSize。 由于已在这些列中放置了控件,因此在设计时这些列可见。
设置布局网格
选择 TableLayoutPanel 控件并单击其智能标记标志符号 ()。 选择**“编辑行和列”打开“列和行样式”**对话框。 有关更多信息,请参见 如何:在 TableLayoutPanel 控件中编辑行和列。
从**“显示”下拉框中选择“列”**。
单击**“确定”**接受更改。
检查点
至此,可以运行应用程序以检查窗体的动态布局。
检查窗体的布局
- 生成并运行该项目。 当窗体出现时,增大和缩小该窗体。
提示
控件将按比例调整大小以填充可用空间。
后续步骤
注意,您可以创建实现动态布局的窗体,使窗体适于本地化。 有关更多信息,请参见演练:创建可根据本地化需要调整比例的布局。
请参见
任务
演练:使用 TableLayoutPanel 在 Windows 窗体上排列控件
演练:使用 FlowLayoutPanel 在 Windows 窗体上排列控件
如何:在 TableLayoutPanel 控件中编辑行和列
演练:使用 Padding、Margins 和 AutoSize 属性对 Windows 窗体控件进行布局
如何:使用 AutoSize 属性和 TableLayoutPanel 控件支持对 Windows 窗体的本地化
演练:使用 Windows 窗体控件上的智能标记执行常规任务