第八章 WinForms控件
回顾 WinForms可用于 Windows 窗体应用程序开发 Windows 窗体控件是从 System.Windows.Forms.Control 类派生的类 标签控件用于显示用户不能编辑的文本或图像 按钮控件提供用户与应用程序交互的最简便方法 组合框控件是列表框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选择项目 窗体提供了收集、显示和传送信息的界面,是 GUI的重要元素 消息框显示消息,用于与用户交互
目标 使用WinForms中的高级控件 单选按钮 图片框 选项卡控件 滚动条 进度条
单选按钮 Windows 窗体单选按钮控件以组的形式使用 单选按钮允许用户从多个选项中选择一个选项 属性 说明 方法 Checked 确定是否已选定控件 方法 Focus 将输入焦点移至控件
显示位图、元文件、图标、JPEG、GIF 或 PNG 等格式的图形 图片框 图片框控件表示可用于显示图像的 Windows 图片框控件 属性 说明 Image 用于指定图片框显示的图像。该图像可在设计或运行时设置 SizeMode 用于指定图像的显示方式。可以指定的各种大小模式包括 AutoSize、CenterImage、Normal 和 StretchImage。默认值为 Normal 方法 Show 显示控件 图片框 是一种图形显示控件 显示位图、元文件、图标、JPEG、GIF 或 PNG 等格式的图形
选项卡控件 在 Windows 应用程序中,选项卡用于将相关的控件集中在一起,放在一个页面中 选项卡控件用于显示多个选项卡,其中每个选项卡均可包含图片和其他控件 选项卡相当于另一个窗体,可以容纳其他控件 选项卡控件
选项卡控件的属性 属性 说明 MultiLine 指定是否可以显示多行选项卡。如果可以显示多行选项卡,该值应为 True,否则为 False。默认值为 False SelectedIndex 当前所选选项卡页的索引值。该属性的值为当前所选选项卡页的基于 0 的索引。默认值为 -1,如果未选定选项卡页,则为同一值 SelectedTab 当前选定的选项卡页。如果未选定选项卡页,则值为 NULL 引用 ShowToolTips 指定在鼠标移至选项卡时,是否应显示该选项卡的工具提示。 如果对带有工具提示的选项卡显示工具提示,该值应为 True,否则为 False TabCount 检索选项卡控件中选项卡的数目
选项卡控件的事件 事件 说明 SelectedIndexChanged 更改 SelectedIndex 属性值时,将触发该事件
滚动条 滚动条 滚动条的属性和事件如下: 用于上下或者左右滚动整个窗口或者文档 在 Microsoft Word 或 Excel 中,为浏览多页面的文档提供了滚动条 属性 说明 Maximum 用于表示滚动范围的上限值。默认值为 100 Minimum 用于表示滚动范围的下限值。默认值为 0 Value 该属性表示滚动条控件中代表滚动框的当前位置的数字。默认值为 0 事件 Scroll 移动滚动条上的滚动框时,将触发该事件 ValueChanged 更改 Value 属性的值时,将触发该事件。Value 属性的值可由滚动事件更改,也可以通过程序来更改 滚动条 垂直滚动条 水平滚动条 带有滚动条的 MS Word 文档窗口
进度条 用于指示操作的进度、完成的百分比 外观是排列在水平条中的一定数目的矩形
进度条的属性和方法 进度条控件的最大值。默认值为 100 进度条控件的最小值。进度条从最小值开始递增,直至达到最大值。默认值为 0 说明 Maximum 进度条控件的最大值。默认值为 100 Minimum 进度条控件的最小值。进度条从最小值开始递增,直至达到最大值。默认值为 0 Step PerformStep 方法应据以增加进度条的光标位置的值。 默认值为 10 Value 进度条控件中光标的当前位置。默认值为 0 方法 Increment 按指定的递增值移动进度条的光标位置 PerformStep 按 Step 属性中指定的值移动进度条的光标位置
应用程序示例 9-1 使用窗体接受职员的个人信息和职业信息 将使用单选按钮、图片框和选项卡控件 应用程序提供有两个选项卡页 第一个选项卡页显示个人信息的文本框
应用程序示例 9-2 第二个选项卡页显示职员信息的文本框
应用程序示例 9-3 新建一个 Windows 应用程序,并将其命名为 EmployeeForm 单击“视图”“解决方案资源管理器” 将 Form1.cs 文件更改为 frmEmployees.cs 单击“视图”“属性” 将窗体的 Name 属性更改为 frmEmployee,并将 Text 属性更改为职员申请表 单击“视图”“工具箱” 以调用工具箱窗口 在窗体中添加一个选项卡控件 按以下幻灯片所示更改属性
应用程序示例 9-4 tabPersonal 选项卡页 tabProfessional 选项卡页: 控件 名称 文本 控件 名称 文本 标签 分组框 grpGeneral 一般信息 grpGender 性别 标签 lblName 姓名: lblAddress 住址: lblPhone 电话号码: 文本框 txtName txtAddress txtPhone 图片框 picLogo 单选按钮 radMale 男 radFemale 女 按钮 btnNext 下一步(&N) tabProfessional 选项卡页: 控件 名称 文本 标签 lblQual 输入学历: lblWorkExp 工作经验(年): 文本框 txtQual txtWorkExp 按钮 btnBack 上一步(&B) btnDone 完成(&D)
应用程序示例 9-5 在“下一步”按钮的 Click 事件中添加以下代码 在选项卡控件的 Click 事件中编写以下代码。 private void tabMain_Click(object sender, System.EventArgs e) { if (tabMain.SelectedIndex ==0) vsbPersonal.Visible =false; tabMain.SelectedIndex = 1; } else if (tabMain.SelectedIndex ==1) vsbPersonal.Visible = true; tabMain.SelectedIndex = 0; private void btnNext_Click(object sender, System.EventArgs e) { if (tabMain.SelectedIndex ==0) vsbPersonal.Visible = false; tabMain.SelectedIndex = 1; } 在选项卡控件的 Click 事件中编写以下代码。 在选项卡之间导航
应用程序示例 9-6 在“上一步”按钮的 Click 事件中添加以下代码 在“完成”按钮中添加以下代码 private void btnBack_Click(object sender, System.EventArgs e) { if (tabMain.SelectedIndex ==1) vsbPersonal.Visible = true; tabMain.SelectedIndex = 0; } private void btnDone_Click(object sender, System.EventArgs e) { MessageBox.Show(“感谢您输入信息”,“信息"); Application.Exit(); } 在“完成”按钮中添加以下代码
应用程序示例 9-7 在垂直滚动条的 Scroll 事件中编写以下代码 检查滚动方向 private void vsbPersonal_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e) { vAbsPos = (float)(vsbPersonal.Value - vsbPersonal.Minimum); SetVerticalScrollMultiplier(grpGeneral); //检查滚动方向是自上往下还是自下往上 if (vsbPersonal.Value > oldValue) grpGeneral.Top = grpGeneral.Top - (int)(vScrollMultiplier * vAbsPos); picLogo.Top = picLogo.Top grpGender.Top = grpGender.Top 检查滚动方向
应用程序示例 9-8 检查滚动方向(续) btnNext.Top = btnNext.Top - (int)(vScrollMultiplier * vAbsPos); } else if (vsbPersonal.Value < oldValue) { grpGeneral.Top = grpGeneral.Top + (int)(vScrollMultiplier * vAbsPos); picLogo.Top = picLogo.Top grpGender.Top = grpGender.Top oldValue = vsbPersonal.Value; 检查滚动方向(续)
应用程序示例 9-9 编写以下自定义方法以便计算垂直滚动量 private void SetVerticalScrollMultiplier(Control ctrl) { float hsb = (float)(vsbPersonal.Height - ctrl.Height); float ticks = (float)(vsbPersonal.Maximum - vsbPersonal.Minimum); vScrollMultiplier = hsb / ticks; }
总结 WinForms单选按钮控件允许用户进行设置 WinForms的图片框控件允许用户在窗体上添加和显示位图、元文件、JPEG、GIF 或 PNG 等格式的图形 WinForms的选项卡控件将类似的功能集中在一起,放在一个对话框或窗口中 WinForms的 HScrollBar 和 VScrollBar 用作水平和垂直滚动条,分别以水平和垂直方式浏览(或滚动)整个文档 进度条控件用于指示操作的进度,并显示排列在水平条中一定数目的矩形,通常通过在程序中设置其Value值来显示任务完成的百分比