VB.NET开发技术实验指导书
实验五 类接口编程
一、实验目的与要求
1.掌握基本接口的设计方法。
2.掌握IComparable接口、IEnumerable接口和ICollection接口的应用。
二、实验内容
练习1:测试类接口IComparable和IComparer
在本练习中,将会创建一个解决方案来实现IComparer和IComparable接口。在本解决方案中我们将创建一个数组列表保存图书的基础信息,该解决方案允许用户根据图书编号和图书价格来排序记录。
图5-1演示了解决方案的完整的主窗体,单击“按价格排序”按钮将按照图书的价格进行升序排列,如图5-2所示。
图5-1 未排序列表 图5-2 按价格排序列表
(1)启动VS.NET,创建一个新的解决方案并创建一个Windows应用程序项目Exercises06-1。
(2)从【工具箱】中选择控件在【窗体设计器】窗口创建如图6-15所示的控件实例。 (3)创建一个Resource.vb类文件,声明一个Book结构,它具有下面的成员和数据类型ID:Integer,BookName:String,Publisher:String,Author:String,Price:Single。
(4)实现IComparable接口,以便根据ID域进行比较。
(5)在相同的结构中创建一个类CompareByPrice,它实现IComparer接口。该类中的方法根据Price成员的内容比较货存项目。
7
VB.NET开发技术实验指导书
(6)在窗体中声明一个数组列表BookList来保存Book结构的实例。
(7)在窗体上的Load载入过程中编写初始化创建必要的Book结构的语句。然后把结构记录信息添加到创建的数组列表BookList中。
(8)在窗体设计器中添加4个按钮,“第一个”、“前一个”、“下一个”和“最后一个”,然后分别为按钮编写必要的语句来分别定位第一个、前一个、下一个和最后一个记录。
(9)在窗体上创建一个“按编号排序”按钮,编写语句根据ID成员的内容排序BookList数组列表。排序BookList之后,显示列表中的第一个记录。
(10)在窗体上创建一个“按价格排序”按钮,编写语句根据Price 成员的内容排序数组。排序之后,显示列表中的第一个记录。 练习2:再现IComparable和IComparer接口
在本练习中,将会再次创建一个实现Icomparable和IComparer接口的解决方案但是,用户将会根据不同的域执行排序,并且可以指定按照升序和降序排序数据。另外,用户能够从列表中添加,修改和删除记录。如图5-3所示显示了解决方案“按编号升序”排列数据,在各文本框中输入新值再单击“更新记录”按钮可更新当前记录,如图5-4所示。
本解决方案中使用了“实验指导1”相同的Book结构。
图5-3 按编号升序排列 图5-4 更新当前记录
(1)启动Visual Studio .NET,创建一个新的解决方案Exercises06-2.sln和一个Windows应用程序项目。
(2)从【工具箱】中选择控件在【窗体设计器】窗口创建如图5-3所示的控件实例。 (3)编写语句声明一个Book结构,它的成员与“实验指导1”中的Book结构相同。 (4)在窗体中声明一个数组列表BookList来保存Book结构的实例。 (5)实现IComparable接口,以便根据ID域进行比较。
(6)在相同的结构中创建一个类DescCompareByID,它实现IComparer接口根据ID域进行降序排序。如下所示是它的实现语句:
Public Class DescCompareByID Implements IComparer
8
VB.NET开发技术实验指导书
Public Function Compare(ByVal x As Object, ByVal y As System.Object) As Integer _ Implements IComparer.Compare If CType(x, Book).ID > CType(y, Book).ID Then Return -1
ElseIf CType(x, Book).ID < CType(y, Book).ID Then Return 1 Else Return 0 End If End Function End Class
(7)在窗体上的Load载入过程中编写初始化创建必要的Book结构的语句。然后把结构记录信息添加到创建的数组列表BookList中。
(8)在窗体设计器中添加4个按钮,“第一个”、“前一个”、“下一个”和“最后一个”,然后分别为按钮编写必要的语句来分别定位第一个、前一个、下一个和最后一个记录。
(9)在窗体上添加3个按钮,“添加记录”、“删除记录”和“更新记录”。然后,分别为这些按钮编写语句来添加、修改和删除记录。
(10)在窗体上添加“按编号升序”和“按编号降序”两个按钮。然后编写语句调用IComparable和IComparer接口实现对编号的升、降序排列。
(11)在窗体上添加“退出”按钮,并编写退出程序的必要语句。 练习3:IEnumerable接口枚举数组列表
在本练习中,将创建一个解决方案来实现枚举程序。解决方案实现了IEnumerable接口对数组列表进行枚举并将项目信息添加到下拉列表框中。如图5-5所示演示了解决方案的运行效果。
图5-5 显示枚举列表
9
VB.NET开发技术实验指导书
图5-6 设计枚举窗体布局
(1)启动VS.NET,创建一个新的解决方案Exercises06-3.sln。
(2)编写语句声明一个Book结构,它的成员与“实验指导1”中的Book结构相同。重写ToString方法以便以在每一个成员之前嵌入提示符并且用空格分隔各成员。
(3)创建一个类BookFileList,它实现IEnumerable接口。BookFileList类的构造函数具有一个参数,要枚举读取的数组列表。
(4)在返回枚举程序的BookFileList类中编写语句返回数组列表。
(5)接下来创建实际的枚举程序,命名实现IEnumerator 接口的类为IEnumeratorBook。
(6)在IEnumeratorBook类中创建构造函数和方法,以便提供接口IEnumerator的实现方式。
(7)在主窗体上设计枚举窗口的布局,如图5-6所示。编写语句来创建BookFileList类实例,读取BookList数组列表枚举BookFileList类实例,将项目添加显示到下拉列表框中。
(8)在窗体上添加“退出”按钮,并编写退出程序的必要语句。
10
VB.NET开发技术实验指导书
实验六 图形用户接口的开发
一、实验目的与要求
1.熟悉Windows窗体的基本属性和方法的使用。
2.熟练地掌握常用控件(Label控件、TextBox控件、RichTextBox控件、按钮类、列表类、图片控件、时钟等控件的基本属性、方法和事件的使用。
二、实验内容
练习1:综合使用复选框和单选按钮
在一个窗体中添加3个GroupBox控件、一个TextBox控件、两个CheckBox控件和6个RadioButton控件,并为这些控件设置属性,如图6-1所示为创建好的窗体。运行该应用程序时,如果在复选框中选中【窗体】,那么选择颜色后,窗体的颜色随着改变,选择【文本】与之相似。另外,当选择字体大小后,文本框中的文字的大小就会随着改变。
图6-1 添加控件后的窗体
下面为该窗体中各个控件的触发事件编写代码。CheckBox1(即窗体)的CheckChanged事件的代码如下所示:
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged,_ RadioButton1.CheckedChanged, RadioButton2.CheckedChanged,_ RadioButton3.CheckedChanged If CheckBox1.Checked = True Then If RadioButton1.Checked = True Then Me.BackColor = ColorSet(0) ElseIf RadioButton2.Checked = True Then Me.BackColor = ColorSet(1) ElseIf RadioButton3.Checked = True Then Me.BackColor = ColorSet(2) End If Else
Me.BackColor = ColorSet(16)
11