《VB开发技术》课程实验指导
更新时间:2024-04-27 08:12:01 阅读量: 综合文库 文档下载
- vb开发环境推荐度:
- 相关推荐
《VB.NET开发技术》
实验指导书
编著 甘小红
VB.NET开发技术实验指导书
目 录
绪 论 .............................................................. 1 一、引言 ............................................................ 1 二、目的与要求 ...................................................... 1 三、主要仪器设备及消耗品 ............................................ 1 四、考核与成绩评定 .................................................. 1 五、实验报告内容及规范 .............................................. 2 六、实验项目 ........................................................ 2 实验一 VISUAL STUDIO.NET的集成开发环境 ............................. 3 实验二 VB.NET控制语句和数组的使用 .................................. 1 实验三 面向对象编程应用 ............................................ 1 实验四 使用VB.NET类编程 ........................................... 3 实验五 类接口编程 .................................................. 7 实验六 图形用户接口的开发 ......................................... 11 实验七 MDI程序设计 ................................................ 16 实验八 文件处理 ................................................... 21 实验九 创建.NET控件 ............................................... 25 实验十 综合性设计 ................................................. 29 附录1 .............................................................. 33 附录2 .............................................................. 36
2
绪 论
一、引言
本课程采用VB.NET这一最容易被接受和掌握并且应用极为广泛的业界主流开发平台Visual Studio.NET为教学和实验环境。为培养适应管理信息系统和软件行业发展需要的实用性、复合型、国际化人才提供支撑,课程的指导思想是将新型、高效、实用、有前景的软件开发工具作为实践考核类课程的主讲内容,定位是本科生的专业基础选修课,其中课堂讲授32学时,实验课时32学时。在该课程的总学时中,课堂讲授与实验课时的比例为1:1,通过综合性设计实验进一步强化了学生综合基本理论知识能力和实际动手能力的培养。
二、目的与要求
1. 实验目的
通过本实验课的训练,使学生全面掌握VB.NET面向对象程序的编程方法,能灵活应用VB.NET面向对象技术和ADO.NET技术,开发WINDOWS窗体和WEB窗体应用程序。同时,进一步地培养学生的项目开发能力、团队协作的精神,使其适应信息化社会发展要求的自学能力以及获取计算机新知识、新技术的能力得到进一步的升华。
2.基本要求
对于每一次上机实验,一般要求按以下步骤进行:
(1)准备工作,上机前明确本次实验的目的和主要内容,并预先设计出相关的程序。 (2)实践操作,在上机操作中,发现问题及时做好详细记录,并给出相应的解决办法,学会使用调试工具。
(3)对本次实验的经验和出现的问题进行分析和总结。
每人实验完后要提交程序电子文档、实验报告电子文档以及打印文档各一份。
三、主要仪器设备及消耗品
每位学生拥有一台具有Windows XP操作系统、Visual Studio.NET IDE和SQL Server 2000配置的电脑且可连接互联网。
四、考核与成绩评定
实验考核成绩占总课程成绩的70%,即70分,它包括基本实验(20分)、综合设计性实验(30分)和实验报告三个部分,具体的评分标准细节如下:
1. 综合性设计实验(30分)
在完成规定的功能基础上进行了创新,创新部分合理,同时程序编写符合规范,注释齐全、明确得28~30分。完成了规定的功能但创新不明显,只限于界面布局的调整,但程序编写规范、清晰,有一定的通用性得25~27分。完成了规定的功能但没有任何创新,程序编写的基本符合规范、较清晰得22~24分。基本上完成了规定的功能,但存在一些小的Bug得18~21分。只完成一部分规定的功能且系统存在严重的缺陷得15~17分。
2.基本实验(20分)
不同的基本实验,具体要求不一样,在此主要依据学生实践过程中表现的动手与创新
VB.NET开发技术实验指导书
能力、程序设计的实用性、扩充性和通用性来评判。
3.基本实验报告与总结报告(各占10分) (1)报告内容完整,表达清晰,得9~10分。
(2)报告内容较完整,表达较清晰,存在少许错误,得7~8分。 (3)报告内容较完整,表达基本清晰,存在一些错误,得6分。 (4)报告内容基本完整,但表达不够清晰,得5分。 (5)报告内容不完整,表达不清晰,得4分。
实验教师必须对每份实验报告进行批改,用红笔指出实验报告中的错、漏之处,并给出评语、成绩,签全名、注明日期。待实验课程结束以后,要求每个学生把全部实验报告整理好,交给实验指导教师,加上目录和封面后,统一装订成册。
五、实验报告内容及规范
实验报告参考格式,详见《VB.NET开发技术实验指导书》附录。
六、实验项目
2
VB.NET开发技术实验指导书
实验一Visual Studio.NET的集成开发环境
一、 实验目的与要求
1. 熟悉Visual Studio.NET集成开发环境; 2. 学会管理VB.NET项目;
3.掌握创建控制台应用程序和Windows窗体应用程序的创建方法。 二、实验内容
(一)了解Visual Studio.NET的集成开发环境 1.Visual Studio.NET的起始页 2.环境配置文件 3.设置帮助选项 4.起始页中的其它页 5.解决方案中的项目组成 6.配置管理器与解决方案配置
7.自定义Visual Studio.NET的工具栏 8.Visual Studio.NET中的菜单结构
9.Visual Studio.NET集成开发环境的窗口
(二)创建控制台应用程序和Windows应用程序 练习1:输入姓名并显示欢迎词。
编写一个控制台应用程序,程序执行时将出现一行提示,要求您输入您的姓名,输入姓名后将显示出如下文字:欢迎你,***同志!。程序运行界面见图1-1所示。
图1-1 程序运行界面
练习2:对两个数求和。
创建一个Windows应用程序,该程序能够实现的功能是对两个整数求和,并且在按下【清空】按钮后可以重新输入数据。创建这个程序的操作步骤如下:
(1)打开VS.NET窗口的【起始页】,在窗口中单击【新建项目】按钮创建新的项目Sum,类型为Windows应用程序。
(2)单击【确定】按钮。打开Form1.vb的窗体设计器,从【工具箱】窗口中添加控件实例到窗体Form1中,并根据所指定的属性进行设置,如图1-2所示。
3
VB.NET开发技术实验指导书
图1-2 为窗体添加控件并设置属性 图1-3 运行创建的项目“两数之和”
(3)双击窗体打开【代码编辑器】窗口,在【代码编辑器】窗口中为需要添加代码的对象添加过程代码。选择Button1,并指定Click过程,然后为该过程添加如下代码实现计算两数之和:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer, b As Integer, c As Integer a = TextBox1.Text b = TextBox2.Text c = a + b TextBox3.Text = c End Sub。
(4)在【代码编辑器】窗口中选择Button2的Click事件处理过程,然后在该过程中添加如下代码清空三个文本框中的内容:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = \ TextBox2.Text = \ TextBox3.Text = \End Sub
(5)接下来选择Button3的Click过程Button3_Click,然后在该过程中添加退出程序的代码如下所示:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End End Sub
(6)在完成代码的编写后,按F5运行该项目。弹出运行界面,在“操作数1”文本框中输入150,在“操作数2”文本框中输入20,单击【求和】按钮,其执行结果如图1-3所示。单击【清空】按钮,可以将文本中的数据清空,然后重新输入数据。最后,单击【退出】按钮退出运行界面。
4
实验二 VB.NET控制语句和数组的使用
一、实验目的与要求
1. 熟悉VB.NET的语法规则、表达式和常用系统函数的使用; 2.熟练地掌握VB.NET提供的常用控制语句及数组的用法; 3.熟悉Windows窗体应用程序的调试工具。
二、实验内容
练习1:利用Select Case语句实现多个分支。
某航空公司规定在旅游的旺季7—9月份,如果定票超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季1—5月份、10月份、11月份,如果定票超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。假设现在是5月份,并且要定购30张机票,根据该月份的优惠率算出应付金额(一张机票的价格为3000)。
Dim month As Integer = 5 Dim quantity As Integer = 30 Dim r As Integer
Dim unit As Integer = 3000 Dim pay As Double Select Case month Case 1, 2, 3, 4, 5, 10, 11 If quantity < 20 Then r = 20 Else r = 30 End If Case 7, 8, 9
If quantity < 20 Then r = 5 Else r = 15 End If Case Else r = 10 End Select
pay = unit * (1 - r / 100) * quantity
上述语句中变量month、quantity、r、unit分别表示月份、购买的数量、优惠率和一张机票的价格,最后将求出变量pay,即应付的总价格。其中的Select Case语句用来计算优惠率,它根据不同的月份和购买机票的数量来确定优惠率。将上述语句代入完整程序后,其运行结果如下:
购买30张机票应付63000元。
VB.NET开发技术实验指导书
练习2:利用冒泡法对数组中的数据进行排序。
已知一个一维数组,该数组中包含有10个整型数据,并且这10个数据呈无序状态,编写一个程序,利用冒泡法将这10数据按从小到大的顺序排列。
Dim Arr() = {25, 36, 52, 34, 18, 98, 58, 83, 46, 67} Dim i, j As Integer Dim temp As Integer For i = 0 To 8
For j = 9 To 9 - i Step -1 If Arr(j) < Arr(j - 1) Then temp = Arr(j) Arr(j) = Arr(j - 1) Arr(j - 1) = temp End If Next j Next i
在上述语句中使用两个For-Next循环语句来对数组中的数据进行排序。内层循环从最后一个数开始对相邻的两个数比较大小,然后将较小的数放到前面。外层循环表示重复内层循环的次数。
将上述语句运行后,其结果如下:
数组Arr中各元素从小到大排序后为:
18 25 34 36 46 52 58 67 83 98
练习3:运用二维数组
在表2-1中列出了5个部门的各季度销售额:
表2-1 各季度销售额 部门1 部门2 部门3 部门4 部门5 第一季度 750 800 700 850 900 第二季度 660 700 600 800 800 第三季度 910 950 750 1000 960 第四季度 800 900 600 950 980 首先声明一个二维数组Sales,根据表2-1中的数据为其赋予初值。下面给出为该二维数组的第一个元素赋予初值,其他与此相似。
Dim Sales(4, 3) As Integer Sales(0, 0) = 750
编写一个循环来计算每一个部门的年销售额。
Dim Depart_Total(4) As Integer Dim i, j As Integer For i = 0 To 4 Depart_Total(i) = 0 For j = 0 To 3
Depart_Total(i) += Sales(i, j) Next j
Console.WriteLine(\
2
VB.NET开发技术实验指导书
Next i
编写一个循环来计算每一季度的销售额。该循环与上述相似,同学们可以试着编写,这里省略。
3
实验三 面向对象编程应用
一、实验目的与要求
1.熟悉并理解类、构造函数与析构函数、属性的设置的概念与方法。
2.掌握类的创建及事件、方法、属性的创建方法,进一步巩固学习类的继承、重载、重写的应用。
二、实验内容
练习1:计算图书价格
在本练习中,将创建四个类,它们用于计算图书销售中的折扣价。假设一家以批发图书为主的销售商,它主要经营初、高中教课书及辅导,以及计算机,大学英语四、六级等图书。其中初、高中的教课书及辅导为7折,计算机售价为8折,英语四、六级图书销价为8.5折。本解决方案最终运行结果如图3-1所示。
图3-1 最终运行结果
(1)创建一个名为Ch04Ex1的解决方案。 (2)向项目中添加一个类模块。
(3)在类模块中创建一个类Book,并向其中添加属性:BookName、BookPrice和BookNum属性;并添加一个方法Calculate,该方法用于计算不打折扣时价格。
(4)以Book类为基类,从中派生一个类CompterBook,在其中添加一个属性DiscountPrice,以保存本书的折扣价,重写Colculate方法,以实现计算本书打折后的价格,添加一个用于计算图书的实际总价方法Sum。
(5)在窗体代码编辑器中添加一个ComputerBook类变量,用以保存创建的计算机图书类实例。
(6)双击“计算”按钮,添加该按钮的Click事件处理过程。在Cilck事件处理过程中添加代码以计算图书的折扣价。
If RadioButton2.Checked Then
VB.NET开发技术实验指导书
aComputerBook = New ComputerBook(txtName.Text, _ Val(txtPrice.Text), Val(txtNum.Text))
txtSum.Text = String.Format(\
txtDiscount.Text = String.Format(\ txtPayment.Text = String.Format(\End If
(7)在类模块中添加其类TeachingBook、EnglishBook类。 (8)在“计算”按钮中添加对这两个类的处理代码。
练习2:学生管理
在本练习中,我们将使用一个数组列表ArrayList保存类的实例引用。另外,还将创建一个类Student,Student类中包含有属性:学号、姓名、系别、数学成绩、语文成绩、英语成绩,用于计算总分数的方法Sum,计算平均成绩的方法Avg。本项目将使用数组列表和类以实现对学生的学习成绩进行管理。
(1) 项目Ch04Ex2的最终运行结果如图3-2所示。
图3-2 最终运行结果
(2)在窗体添加如图3-2控件所示的控件。
(3)向项目中添加一个名为Student的类,并添加上述属性和方法。 (4)在窗体代码编辑器中添加一个数组列表ArrayList,并实例化。 (5)为按钮“添加学生信息”添加Click事件,在该事件处理程序中实例化一个Student类,并添加到ArrayList中。
StudentInfoList.Add(New Student(txtID.Text, txtName.Text, txtDepartment.Text, _ txtMathScore.Text, txtChineseScore.Text, txtEnglisgScore.Text))
(6)为按钮“浏览学生信息”编写Click事件处理程序。该事件处理程序只需要遍厉ArrayList中每个Student类实例,并访问其中的有关属性,最后在文本框中进行显示。
(7)为其它按钮编写实现其功能的代码。
2
VB.NET开发技术实验指导书
实验四 使用VB.NET类编程
一、 实验目的与要求
1.熟练掌握String类和Date类的使用。
2.灵活应用MessageBox类实现不同格式的消息对话框显示。 3.掌握堆栈操作的编程方法。
二、实验内容
练习1:使用String类的方法
声明一个String实例,然后调用String类中的特性和方法完成以下功能:获取第6个位置上的字符、返回实例中第1次出现字符y的位置、获取该String实例的长度、将该实例中字符转换成大写字母、返回从第5个开始的10个字符、将实例中的字符串“for”替换为“from”,重新创建一个String实例,然后对两个String实例进行比较。
Option Strict On Dim i As Integer
Dim Tem As String = \ Console.WriteLine(\中第6个位置上的字符为:\ Console.WriteLine(\中包含的字符串为:\
Console.WriteLine(\中第1次出现字符y的位置是:\ Console.WriteLine(\字符串Tem的长度为:\
Console.WriteLine(\将Tem中的所有字符全部转换成大写字母为:\ Console.WriteLine(\以第5个字符开始的10字符为:\ Dim Met As String = \ Console.WriteLine(\中包含的字符串为:\ If Tem.Equals(Met) = True Then
Console.WriteLine(\两个字符串相等!\ Else
Console.WriteLine(\两个字符串不相等!\ End If
Console.WriteLine(\被替换后的Tem中包含的字符串为:\
将上述语句运行后,其结果如下:
Tem中第6个位置上的字符为:i
Tem中包含的字符串为:especially for those searching for a purpose Tem中第1次出现字符y的位置是:10 字符串Tem的长度为:44
将Tem中的所有字符全部转换成大写字母为:ESPECIALLY FOR THOSE SEARCHING FOR A PURPOSE
以第5个字符开始的10字符为:ially for
Met中包含的字符串为:mysterious and complicated force 两个字符串不相等!
被替换后的Tem中包含的字符串为:especially from those searching from a purpose
3
VB.NET开发技术实验指导书
练习2:使用不同的日期格式显示日期
创建两个指定日期的DateTime实例和一个TimeSpan类的实例,以不同的格式输出DateTime实例,最后比较两个DateTime实例,并用TimeSpan实例返回他们相差多少小时。
Dim time1 As DateTime = New DateTime(1998, 9, 15) Dim time2 As DateTime = New DateTime(1999, 10, 7) Dim time_dif As TimeSpan
Console.WriteLine(\以'dddd,MMM dd,yyyy'格式输出time1为:\& time1.ToString(\dd,yyyy\
Console.WriteLine(\以'MMMM yy'格式输出time2为:\
Console.WriteLine(\以'MM/dd/yy h:mm:ss tt'格式输出time1为:\& time1.ToString(\ h:mm:ss tt\
Dim Bool As Integer
Bool = DateTime.Compare(time1, time2) If Bool < 0 Then
Console.WriteLine(\小于time2\ElseIf Bool > 0 Then
Console.WriteLine(\大于time2\Else
Console.WriteLine(\等于time2\End If
time_dif = time2.Subtract(time1)
Console.WriteLine(\与time1之间相差\天\Console.WriteLine(\与time1之间相差\小时\
将上述语句运行后,其结果如下:
以'dddd,MMM dd,yyyy'格式输出time1为:星期二,九月 15,1998 以'MMMM yy'格式输出time2为:十月 99
以'MM/dd/yy h:mm:ss tt'格式输出time1为:09-15-98 12:00:00 上午 time1小于time2
time2与time1之间相差387天 time2与time1之间相差9288小时
练习3:使用MessageBox类创建消息对话框
使用MessageBox类创建一个消息对话框,在该对话框中显示“终止”、“重试”和“忽略”3个按钮,并且要求显示的图标为
Imports System.Windows.Forms Module Module1 Sub Main()
Dim DiagResult As DialogResult
DiagResult = MessageBox.Show(\显示消息对话框!\请选择按钮\
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Exclamation, _ MessageBoxDefaultButton.Button3) Select Case DiagResult Case DialogResult.Abort
。
4
VB.NET开发技术实验指导书
Console.WriteLine(\用户单击了【终止】按钮!\ Case DialogResult.Retry
Console.WriteLine(\用户单击了【重试】按钮!\ Case Else
Console.WriteLine(\用户单击了【忽略】按钮!\ End Select Console.ReadLine() End Sub End Module
将上述语句运行后,首先弹出如图4-1所示的消息对话框,当选择一个按钮后,它将输出一条对应的消息。例如,单击【重试】按钮后,将输出下列信息:
用户单击了【重试】按钮!
图4-1 有图标和3个按钮的消息对话框
练习4:运用队列和堆栈
有一个String类实例,其值为“just how the doomed man chose to spend his last”,该实例中有10个单词。首先用Split方法将这些单词赋予一个String数组,然后将这个数组的各元素作为队列的元素和堆栈的元素。
Imports System.Collections.Queue Imports System.Collections.Stack
Dim ZT As String = \ Dim ZFU() As String ZFU = ZT.Split(\ Dim i As Integer
Console.Write(\显示String数组中的元素:\ For i = 0 To ZFU.Length - 1 If i = 0 Then
Console.Write(ZFU(i)) Else
Console.Write(Space(2) & ZFU(i)) End If Next i
Console.WriteLine() Dim que As New Queue Dim sta As New Stack
'将数组中的元素添加到que队列 For i = 0 To ZFU.Length - 1 que.Enqueue(ZFU(i))
5
VB.NET开发技术实验指导书
Next i
'将数组中的元素压入堆栈sta For i = 0 To ZFU.Length - 1 sta.Push(ZFU(i)) Next i
Console.WriteLine(\删除的que队列的顶部元素是:\ Console.WriteLine(\删除的sta堆栈的栈顶元素是:\
上述语句的倒数第2行表示从队列中返回队顶元素并将其删除,最后一行表示从堆栈中返回栈顶元素并将其删除。将上述语句运行后,从其结果能够看出队列和堆栈两种存储结构的不同,结果如下:
显示String数组中的元素:just how the doomed man chose to spend his last 删除的que队列的顶部元素是:just 删除的sta堆栈的栈顶元素是:last
6
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
VB.NET开发技术实验指导书
End If End Sub
从上述代码可以看出,当单击CheckBox1后还将触发RadioButton1、RadioButton2和RadioButton3的CheckedChanged事件。这样能够在选中CheckBox1后,窗体颜色随选择的颜色而改变。上述语句中还调用了一个名为ColorSet的函数,该函数的功能是实现颜色的选择,代码如下:
Private YanSe As Color
Private Function ColorSet(ByVal color As Integer) As Color Select Case color Case 0
Return YanSe.Red Case 1
Return YanSe.Green Case 2
Return YanSe.Blue Case Else
Return YanSe.Gray End Select End Function
CheckBox2(即文本)的CheckChanged事件的代码与CheckBox1相似,惟一不同的是将CheckBox1代码中的CheckBox1.Checked改为CheckBox2.Checked,将Me替换为TextBox1。
接下来Text属性为“颜色”的组中RadioButton的CheckChanged事件。例如RadioButton1(即红色)的CheckChanged事件的代码为:
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, _ CheckBox1.CheckedChanged, CheckBox2.CheckedChanged End Sub
上述过程中虽然没有过程体,但是该过程仍然不可缺少。RadioButton2和RadioButton3的CheckChanged事件与上述代码相似。他们实现与CheckBox1和CheckBox2的联合触发。
再往下是对字体大小的设置。下面的6行代码分别是RadioButton4(大号)、RadioButton5(中号)和RadioButton6(小号)的CheckChanged事件中的代码:
TextBox1.Font = New System.Drawing.Font(\宋体\ System.Drawing.GraphicsUnit.Point) TextBox1.Font = New System.Drawing.Font(\宋体\ System.Drawing.GraphicsUnit.Point) TextBox1.Font = New System.Drawing.Font(\宋体\ System.Drawing.GraphicsUnit.Point)
编写完前面的代码后就可以对该应用程序进行操作。图6-2和6-3为运行应用程序时所做的不同操作。
12
VB.NET开发技术实验指导书
图6-2 文本颜色采用默认值 图6-3 为窗体和文本选择颜色
练习2:综合使用组合框和列表框
在一个窗体中添加1个组合框、1个列表框、1个标签、1个文本框和6个按钮,并为这些控件设置属性。如图6-4所示为设置好属性的窗体。运行该应用程序时,可以在文本框中输入要向组合框中添加的成员,然后单击【添加】按钮进行添加。可以单击图6-4所示的按钮来对组合框和列表框中的成员进行操作。
图6-4 设置好属性的窗体
下面为该窗体中各个控件的触发事件编写代码。当在文本框或组合框中输入要添加成员后,单击【添加】按钮便可在组合框中添加成员。【添加】按钮(Button3)的Click事件的代码如下:
If TextBox1.Text = \ MessageBox.Show(\请输入要添加的成员\ TextBox1.Focus() End If
If TextBox1.Text <> \
ComboBox1.Items.Add(TextBox1.Text) TextBox1.Text = \ End If
If ComboBox1.Text <> \
ComboBox1.Items.Add(ComboBox1.Text) End If
如果要将组合框中的成员添加到列表框中,同时从组合框中删除该成员,那么在组合框中选择成员后,单击“向右移动”>>按钮即可。当在组合框中选择成员后,便使“向右移动”>>按钮的Enable属性为真,其SelectedValueChanged事件的代码如下:
13
VB.NET开发技术实验指导书
Button1.Enabled = True
当单击“向左移动”>>按钮后,触发MouseDown事件,其代码为:
Private Sub Button1_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown If ComboBox1.SelectedItem <> \
ListBox1.Items.Add(ComboBox1.SelectedItem) ComboBox1.Items.Remove(ComboBox1.SelectedItem) End If
Button1.Enabled = False End Sub
如果要将列表框中的成员添加到组合框中,同时从列表框中删除该成员,那么在列表框中选择成员后,单击“向左移动”<<按钮即可。该按钮的MouseDown事件的代码与上述“向右移动”>>按钮相似,只需将代码中的ListBox1与ComboBox1互换,将Button1该为Button5即可。
如果要将组合框中的所有成员添加到列表框中,则【全部移入】按钮的Click事件的代码如下:
If ComboBox1.Items.Count > 0 Then Dim i As Integer
For i = 0 To ComboBox1.Items.Count - 1
ListBox1.Items.Add(ComboBox1.Items.Item(i)) Next i
ComboBox1.Items.Clear() End If
上述代码中通过ComboBox1的Items.Clear属性删除组合框中的所有成员。从列表框中将所有元素全部移出与上述代码相似。在为每个控件编写代码后就可以对该应用程序进行操作。
练习3:综合使用TreView控件和ListView控件
在一个窗体中添加1个TreeView控件、1个ListView控件和两个Label控件,并设置相应的属性。下面通过代码为TreeView控件添加树节点,如下所示:
Dim newtree As TreeNode = New TreeNode(\图书管理系统\ TreeView1.Nodes.Add(newtree)
Dim node1 As TreeNode = New TreeNode(\用户表\ TreeView1.Nodes(0).Nodes.Add(node1)
Dim node2 As TreeNode = New TreeNode(\作者表\ TreeView1.Nodes(0).Nodes.Add(node2)
Dim node3 As TreeNode = New TreeNode(\学生信息表\ TreeView1.Nodes(0).Nodes.Add(node3)
Dim node4 As TreeNode = New TreeNode(\图书明细表\ TreeView1.Nodes(0).Nodes.Add(node4)
Dim node5 As TreeNode = New TreeNode(\出版社信息表\ TreeView1.Nodes(0).Nodes.Add(node5)
在上述代码中,首先通过前两行代码在TreeView中添加1个根节点,然后再声明5个TreeNode变量,并将这5个变量添加为子节点。
14
VB.NET开发技术实验指导书
当运行应用程序时,选择一个子节点在ListView中显示该节点的相关信息。选择节点同时在ListView中显示相关信息由TreeView控件的AfterSelect事件实现,其代码如下:
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect Select Case TreeView1.SelectedNode.Index Case 0
ListView1.Columns.Clear() ListView1.Items.Clear()
ListView1.Columns.Add(\编号\ ListView1.Columns.Add(\姓名\ ListView1.Columns.Add(\性别\ ListView1.Columns.Add(\联系电话\ ListView1.Columns.Add(\密码\ Dim a As New ListViewItem(\ ListView1.Items.Add(a) a.Checked = True a.SubItems.Add(\赵俊昌\ a.SubItems.Add(\男\
a.SubItems.Add(\ a.SubItems.Add(\ ?? Case 1 ?? End Select End Sub
通过Select Case语句来判断选择的是哪一个节点,并通过ListView的Columns.Add方法为其添加列,然后声明一个ListViewItem变量(表示添加的行),然后通过SubItems.Add方法为其添加行。图6-5所示为当选择“出版社信息表”节点时,在ListView中显示该节点的相关信息。
图6-5 显示“出版社信息表”的相关信息
15
VB.NET开发技术实验指导书
实验七 MDI程序设计
一、实验目的与要求
1. 掌握MDI窗体的创建。
2. 掌握工具栏、状态栏、菜单和快捷菜单控件的使用。 3. 掌握管理MDI子窗体的方法。
二、实验内容
练习1:创建MDI字处理程序
在实验中,我们将创建一个MDI应用程序来对文本文字进行简单的处理。MDI应用程序的运行结果如图7-1所示,其中显示了加载了多个MDI子窗体时的效果,并在每个子窗体分别对文字进行了不同的处理,例如加粗或添加下划线等。
图7-1 MDI字处理程序
关于本程序的完整解决方案可以打开本书的光盘并找到相应的章,此处仅列出了创建过程中的部分代码。
(1)创建一个新的项目Exercises8-1,配置一个MDI父窗体后设置其外观属性;然后添加一个新的窗体作为子窗体。
(2)切换到父窗体的窗体设计器,创建一个下拉菜单控件实例,包含一个“文件”菜单,一个“新建”和“退出”两个菜单项以及一个分隔线。
(3)设置“文件”菜单的属性,并为“新建”和“退出”菜单项编写代码。实现可以新建一个子窗体并显示,子窗体的默认标题栏是“未命名”。选择“退出”菜单项将退出整个应用程序。
(4)在子窗体中添加文本框控件实例,设置它随子窗体改变大小,显示多行文本并且总是显示垂直滚动条。添加下拉菜单控件实例,创建一个“格式”菜单对文本框中的字体设置格式的对齐方式,初始值为“默认”和“左对齐”。还可以设置为粗体、斜体、下划线和删除线字体,对齐方式有居中对齐和右对齐。
(5)创建一个“窗口”菜单,它可以显示加载的子窗体列表以及改变子窗体的布局方式。
(6)设置“格式”菜单和“窗口”菜单的属性,使运行时两个子窗体的菜单出现在父窗体“文件”菜单之后。
16
VB.NET开发技术实验指导书
(7)添加改变文本框对齐方式的代码,并且当对齐方式改变时在菜单项中也将显示激活标记。下面给出了自定义过程TxtContLayout的代码,它接受一个整型值来改变文本框中的对齐和菜单项标记的状态。
Private Sub TxtContLayout(ByVal menuindex As Integer) mnuFmtLeft.Checked = False mnuFmtMiddle.Checked = False mnuFmtRight.Checked = False Select Case menuindex Case 0 '左对齐
mnuFmtLeft.Checked = True Case 1 '右对齐
mnuFmtRight.Checked = True Case 2 '居中对齐
mnuFmtMiddle.Checked = True End Select
txtCont.TextAlign = menuindex End Sub
(8)接下来添加改变文本框字体格式的代码。它也是同步进行的,当格式改变时,菜单项的状态也随之改变。我们添加了一个过程FontLayout,它的代码如下:
Private Sub FontLayout(ByVal fontindex As Integer) mnuFmtDefine.Checked = False mnuFmtBold.Checked = False mnuFmtItalic.Checked = False mnuFmtUnderline.Checked = False mnuFmtStrikeout.Checked = False Select Case fontindex
Case 0 '默认字体格式 mnuFmtDefine.Checked = True Case 1 '字体加粗显示 mnuFmtBold.Checked = True Case 2 '字体斜体显示 mnuFmtItalic.Checked = True Case 4 '添加字体下划线
mnuFmtUnderline.Checked = True Case 8 '添加字体删除线 mnuFmtStrikeout.Checked = True End Select
txtCont.Font = NewFontClass(fontindex) End Sub
FontLayout过程与NewFontClass过程结合完成这些功能。FontLayout过程负责改变菜单项的状态,NewFontClass过程负责改变字体的格式。
Private Function NewFontClass(ByVal shape As Integer) As Font
NewFontClass = New System.Drawing.Font(\宋体\ End Function
17
VB.NET开发技术实验指导书
(9)根据本章所介绍的内容完成解决方案中的其他功能。运行Exercises8-1项目,选择【文件】|【新建】命令,创建两个子窗体实例。在子窗体中输入几段文字,再通过【格式】菜单改变字体格式和对齐方式,如图7-2所示。
图7-2 改变格式和对齐方式
图7-3 扩展MDI应用程序
练习2:扩展MDI应用程序
这次以上次实验的结果为基础,继续对MDI应用程序的功能进行扩展,如图8-27所示本次实验的结果。
首先我们需要在父窗体上创建一个状态栏实例。在状态栏显示打开的文档数量,显示文档的字符数、字数。字是由空格分隔的若干字符。当用户在文本框中修改文本内容时,更新字符数和字数。另外,当用户在不同的MDI子窗体导航时也更新这些值。
然后在子窗体创建一个工具栏实例。工具栏按钮允许对文本框中的字体格式和对齐方式进行控制。并且,当用户在不同的MDI子窗体之间导航时都将恢复到默认值。
练习3:防止加载多个重复子窗体
在创建MDI应用程序时使用最多就是子窗体和父窗体之间的通信。MDI父窗体要获
18
VB.NET开发技术实验指导书
得当前的活动窗体和窗体数量,以及子窗体必须引用父窗体的实例。但是当在MDI父窗体中出现了多个不同的子窗体时,当再次单击时将不希望重新创建该子窗体的引用,而是直接激活该子窗体。如图7-4所示,如果再次单击工具栏中的“学生信息”按钮,则不会再创建该子窗体的实例,而是激活它。
图7-4 防止加载多个重复子窗体示例
这个功能的执行原理是:首先检测是否有MDI子窗体,如果没有,则创该MDI子窗体的窗体实例;如果有,则检测当中有没有其窗体实例,有则激活;没有则创建其窗体实例。下面是实现这个功能的CheckForm过程,它需要两个参数:MDIChildForm是需检测的窗体,MDIChildFormName是检测窗体的名字。
Public Sub CheckForm(ByVal MDIChildForm As Form, ByVal MDIChildFormName As String) If MIDIfrm.MdiChildren.Length < 1 Then
'如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例 ShowNewFrm(MDIChildFormName) '退出过程 Exit Sub Else
Dim x As Integer
Dim FrmChecked As Boolean
'循环遍历MDI父窗体中的所有子窗体 For x = 0 To (MIDIfrm.MdiChildren.Length) - 1
Dim tempChildfrm As Form = CType(MIDIfrm.MdiChildren(x), Form) If tempChildfrm.Text = MDIChildFormName Then FrmChecked = True
'检测到有该MDI子窗体,设为TRUE 并退出循环 Exit For Else
FrmChecked = False End If Next
19
VB.NET开发技术实验指导书
If FrmChecked = False Then
'在打开的窗体中没检测到则新建 ShowNewFrm(MDIChildFormName) Else
'在打开的窗体中检测到则激活
Dim MDIChildFrm As Form4 = CType(MIDIfrm.MdiChildren(x), Form) MDIChildFrm.Activate() End If End If End Sub
对于前面介绍的功能,我们可以在工具栏按钮“学生信息”的Click事件处理程序中使用下面的语句防止加载多个重复子窗体。
CheckForm(frm1, \学生信息表\
20
VB.NET开发技术实验指导书
实验八 文件处理
一、实验目的与要求
1.熟悉使用System.IO模型访问文件的主要方法,进一步理解使用Directory类、File类、FileStream类操作文件的具体方法。
2.了解StreaemWriter类、StreamReader类、BinaryWriter类和BinaryReader类访问文件的过程。
二、实验内容
练习1:编写一个对C盘根目录下的子目录和文件进行操作的程序。
程序的设计界面如图8-1所示,程序的运行界面如图8-2所示。程序运行时将在ListBox1中显示C盘根目录下的所有子目录名称,用户可以从中选择一个或多个子目录,选中后按【删除】按钮将删除选中的子目录。用户也可以在文本框中输入要创建的子目录名,输入后按【创建】按钮将在C盘根目录下创建相应的子目录。程序运行时在ListBox2中显示C盘根目录下的所有文件名,用户选择一个或多个文件后按【删除】按钮将删除选中的文件。
图8-1 程序设计界面
图8-2 程序运行界面
练习2:替换文件中的某个字符。
某同学用英文写了一篇文章,由于失误,他把所有的“$”字符写成了“%”字符,请编写一个程序改正该同学的错误,即把文件中的所有的“%”字符改成“$”字符。假设该同学所写文章的文件名为EXAM.TXT。原文如图8-3所示,修改后的文章如图8-4所示。
21
VB.NET开发技术实验指导书
图8-3 修改前文件的内容
图8-4 修改后文件的内容
三、操作步骤
练习1:
(1)根据题目要求,设计窗体界面及各控件的属性值。 (2)编辑各事件过程和通用过程。 (3)调试、运行程序。 参考程序:
Imports System.IO Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub DispDir() Dim i As Integer
Dim str1() As String ListBox1.Items.Clear()
str1 = Directory.GetDirectories(\ For i = 0 To str1.Length - 1
Me.ListBox1.Items.Add(str1(i)) Next i End Sub
22
VB.NET开发技术实验指导书
Private Sub DispFile() Dim i As Integer
Dim str2() As String ListBox2.Items.Clear()
str2 = Directory.GetFiles(\ For i = 0 To str2.Length - 1
Me.ListBox2.Items.Add(str2(i)) Next i End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim str1() As String
If (TextBox1.Text <> \
Directory.CreateDirectory(\ End If
DispDir() End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DispDir() DispFile() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer
For i = ListBox1.SelectedItems.Count - 1 To 0 Step -1 Directory.Delete(ListBox1.SelectedItems(i).ToString()) DispDir() Next i End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim i As Integer
For i = ListBox2.SelectedItems.Count - 1 To 0 Step -1 File.Delete(ListBox2.SelectedItems(i).ToString()) DispFile() Next i End Sub End Class
23
VB.NET开发技术实验指导书
练习2:
该练习的操作步骤与上一题相似,在此省略。 参考程序:
Imports System.IO Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer, ch As Char
Dim MyFile As New FileStream(\ a = MyFile.ReadByte() TextBox1.Text = \ Do While (a <> -1) ch = Chr(a)
TextBox1.Text += ch a = MyFile.ReadByte() Loop
MyFile.Close()
End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a As Integer, ch As Char
Dim MyFile As New FileStream(\FileAccess.ReadWrite)
a = MyFile.ReadByte() Do While (a <> -1) ch = Chr(a)
If (ch = \
MyFile.Seek(-1, SeekOrigin.Current) MyFile.WriteByte(Asc(\ End If
a = MyFile.ReadByte() Loop
MyFile.Close() End Sub End Class
24
VB.NET开发技术实验指导书
实验九 创建.NET控件
一、实验目的与要求
1. 掌握组件的设计
2. 熟悉用户自定义控件的创建过程,并且能从现有控件中继承。
二、实验内容
练习1:创建一个限制所选项数量的复选列表框
在本示例中创建的复选列表框继承CheckedListBox内置控件,并且对它进行了扩充。为了扩展该自定义控件的功能,下面创建一个MaxSelectedItems属性。该属性将保存最多可以选择的列表的项数。当用户选取一个列表项时,触发的事件会监控是否已经达到了最大值。如果超过最大值,那么选择将被阻止,并触发一个事件。下面是创建该用户自定义控件的过程。
创建一个名为LimitedCheckedListBox的Windows控件库项目。之后打开代码编辑器窗口,在代码行的类顶部导入命名空间System.ComponentModel并修改类的声明:
Imports System.ComponentModel Public Class LimitedCheckedListBox
Inherits System.Windows.Forms.CheckedListBox
接下来添加控件特定的代码。首先需要实现MaxSelectedItems属性,用一个模块级变量来保存该属性值,然后为属性自身创建代码,如下所示:
Private mnMaxSelectedItems As Integer = 5
Return mnMaxSelectedItems End Get Set(ByVal Value As Integer) If Value < 0 Then Throw New ArgumentException(\该属性值无效!\ Else mnMaxSelectedItems = Value End If End Set End Property 上述语句将MaxSelectedItems属性的默认值设置为5,并且设置属性的文字说明。下面需要声明当用户选择的列表项大于5时触发的事件。将该事件命名为MaxItemsExceeded,其代码如下: Public Event MaxItemsExceeded(ByVal sender As Object, ByVal e As EventArgs) 然后需要在用户单击列表项时引发的事件例程中插入代码。在LimitedCheckedListBox的ItemCheck事件中插入下列代码: Private Sub LimitedCheckedListBox_ItemCheck(ByVal sender As Object, _ ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles MyBase.ItemCheck 25 VB.NET开发技术实验指导书 If (Me.CheckedItems.Count >= mnMaxSelectedItems) And _ (e.NewValue = CheckState.Checked) Then RaiseEvent MaxItemsExceeded(Me, New EventArgs) e.NewValue = CheckState.Unchecked End If End Sub 最后生成项目,创建一个包含LimitedCheckedListBox控件的DDL文件。如果要使用LimitedCheckedListBox控件,只需将该控件添加到Windows窗体中即可像其他控件一样应用。 练习2:创建一个复合的UserControl 首先创建一个Windows控件库项目,并将其命名为SelectCoboControl,在生成的类文件中,将类的名称该为SelectCoboControl。进入控件的设计窗口,将两个按钮(BtnAdd和BtnRemove)和两个列表框(LstSource和LstTarget)添加到控件上,如图9-1所示。 图9-1 符合的UserControl控件 然后分别为两个按钮添加单击事件的代码,如下所示: Private Sub BtnAdd_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnAdd.Click Dim objItem As Object For Each objItem In LstSource.SelectedItems LstTarget.Items.Add(objItem) Next objItem End Sub Private Sub BtnRemove_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnRemove.Click Dim nIndex As Integer For nIndex = LstTarget.SelectedItems.Count - 1 To 0 Step -1 LstTarget.Items.Remove(LstTarget.SelectedItems(nIndex)) Next nIndex End Sub 上述代码表示当单击BtnAdd按钮时将LstSource列表框中选中的项添加到LstTarget列表框中;当单击BtnRemove按钮时将LstTarget列表框中选中的项删除。 接下来需要创建复合控件的公共属性和方法。在该示例中,为复合控件添加了4个属性和1个方法。 Public ReadOnly Property SelectedItem(ByVal iIndex As Integer) As Object Get Return LstTarget.Items(iIndex) End Get 26 VB.NET开发技术实验指导书 End Property Public ReadOnly Property SelectedCount() As Integer Get Return LstTarget.Items.Count End Get End Property Public ReadOnly Property AvailableCount() As Integer Get Return LstSource.Items.Count End Get End Property Public ReadOnly Property AvailableItem(ByVal iIndex As Integer) As Object Get Return LstSource.Items(iIndex) End Get End Property Public Sub Add(ByVal objItem As Object) LstSource.Items.Add(objItem) End Sub 上述代码中,SelectedItem属性用于在目标列表框中读取列表项的索引属性;SelectedCount属性表示呈现在目标列表框中可使用的列表项数量;AvailableCount属性表示呈现源列表框中的列表项数量;AvailableItem属性用于在源列表框中读取列表项的索引属性;Add方法表示为源列表框增加一个列表项。 最后生成项目,创建一个包含SelectCoboControl控件的DDL文件。在需要使用SelectCoboControl控件,将该控件添加到Windows窗体中即可。 练习3:创建一个显示当前时间的自定义控件 创建一个显示当前时间的控件非常有用,当需要显示当前时间时只需在窗体中添加该控件即可,而不必去重新编写代码去实现。首先该控件首先要创建一个Windows控件库项目,并将其命名为Time,在生成的类文件中,将类的名称该为Time。在控件的设计窗体中添加一个TextBox控件和一个Timer控件,并将TextBox的ReadOnly属性设置为True,将Time控件的Enable属性设置为True,Interval属性设置为1000(表示1秒)。 接下来为要实现的功能编写代码。首先为创建的该自定义控件定义一个属性,该属性用来表示时间的显示格式。 Enum Sel As Integer Select1 Select2 select3 select4 End Enum Private Mine As Sel Public Property Style() As Sel Get Return Mine 27 VB.NET开发技术实验指导书 End Get Set(ByVal Value As Sel) Mine = Value End Set End Property 上述代码中定义了一个名为Style的属性,该属性为定义的枚举类型Sel。当需要以某一种格式来显示时间时,只需在该属性中选择一种类型。下面的语句表示如何显示时间: Private GeShi As String Private Function Inital() As String Select Case Mine Case Sel.Select1 GeShi = Now Case Sel.Select2 GeShi = \年MMMMd日 hh:mm:ss dddd\ Case Sel.select3 GeShi = \年M月dd日 hh:mm:ss\ Case Sel.select4 GeShi = \年MMMMd日 hh:mm:ss tt\ End Select Return GeShi End Function Private Sub Timer1_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick Dim CurrentTime As DateTime = DateTime.Now TextBox1.Text = CurrentTime.ToString(Inital()) End Sub 上述语句首先在Timer1的Tick事件中声明一个具有当前时间的DateTime型数据,然后将当前时间以字符串的形式在文本框中输出,其中参数Inital()表示用户希望时间显示的格式,它为Initial函数的返回值。添加上述代码后,在解决方案中生成项目,便创建了一个名为Time控件的DDL文件。下面通过示例来测试所创建的Time控件。 创建一个名为Test的Windows应用程序,在其窗体下添加一个Label和一个Time控件。如图9-2所示为默认情况下显示当前时间,图9-3所示为将新添加属性Style的值设置为select2时显示当前时间。 图9-2 默认显示当前时间 图9-3 选择不同的显示格式 28 VB.NET开发技术实验指导书 实验十 综合性设计 一、实验目的与要求 实验目的: 1.培养学生综合利用Visual Basic.Net进行程序设计的能力,主要是培养学生利用系统提供的标准控件进行创新设计,能开发一般规模的数据库管理系统。 实验要求: 1. 认真分析题目,进行总体设计和详细设计。 2.达到基本要求后,进行创新设计,增加功能等。 3. 采取自愿组合的方式,每2人为一组,从下面所给出的设计题目中任选一个题做, 而且在设计最终要提交程序电子档、实验报告电子文档及打印文档。 4.对实现的软件的要求实现的功能完整、实用性强、容易扩充,设计的界面美观、操作方便,编码规范,并且提交的软件是可安装软件。 二、实验内容 题目1:工资管理系统 1.功能需求:工资管理程序的主要任务是根据本单位当月的在册职工,按各有关工资项目的数据分别求出每个人的实发工资。为了财会管理的需要,每月还要打印各种必要的工资报表。 (1)能够存储每个职工当月的工资信息,包括部门/编号/姓名/基本工资/岗位津贴/职务补助/奖金等数据。 (2)应当具备增加人员,删除人员,修改人员,报表打印及登录、退出系统等功能。 2.设计步骤: (1)主控模块的设计 1) 建立界面,主窗体参考界面,见图10-1所示 2) 设置界面属性 3) 设计代码 10-1 工资管理主窗体界面 图10-2 职工工资修改界面 (2)登录对话框的设计 1) 建立界面,见图10-1所示 29 VB.NET开发技术实验指导书 2) 修改代码 (3)建立数据库文件 (4)在工程中添加”数据环境” (5)“增加”模块的设计 (6)“修改”模块的设计 (7)“删除”模块的设计 (8)“浏览”模块的设计 (9)“批处理”模块的设计 (10)“打印”模块的设计 (11)工程的编译 (12)创建数据库应用程序的安装包 主要界面设计可参考图示10-2、10-3、10-4 图10-3 工资表界面 图10-4 打印工资报表及工资条控件布局 题目2:学校机房自费管理系统 1.功能需求: 基本需求功能如下: ? 基本信息管理:对学生、教师信息的添加、修改、删除、浏览和打印等。 ? 上机卡管理:上机卡的办理和删除等。 ? 上机登记管理:对上机者进行登记按时间扣除相应的费用以及查看使用时间等功能。 30 VB.NET开发技术实验指导书 ? 系统维护管理:对系统进行初始化操作以及用户管理等功能。 ? 帮助管理:用于显示版本、关于、开发人员信息和帮助。 2.设计步骤(部分窗体): (1) 用户登录窗体设计 10-5 用户登陆界面 操作思路: 在用户名框中输入用户名在密码框中输入密码,单击进入系统确定用户是否正确,如果正确则进入系统(仅有三次进入机会,如果超过三次则不允许进入). (2) 主窗体设计(参考界面),见图10-6所示。 10-6 主窗体界面设计 (3)教师信息编辑窗体设计及代码设计 教师信息编辑界面设界如图10-7所示。 图10-7 教师信息编辑界面设计 31
正在阅读:
《VB开发技术》课程实验指导04-27
休闲食品食品委托加工合同格式03-15
全市优秀少先队员事迹材料(多篇)03-08
北兴塘大桥主桥钢桁架无损检测方案(新)07-19
燃料运行规程01-19
2016年毕节医学高等专科学校单招语文模拟试题及答案11-03
第九篇 监控系统运行规程01-14
锅炉运行规程12-26
2017年台湾省绿化工实操考试试卷12-03
MBA实践手册(范例) - 图文01-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 开发技术
- 指导
- 课程
- 实验
- 文秘知识(公共部分)
- 南农动物性食品卫生学试题范围
- SQL习题(附答案)
- 段建业盲派命理断语整理1(上)
- 暑期社会实践调查(美食篇) - 图文
- 慢性病高危人群筛查和干预实施方案
- 中级财务会计试题及答案(B卷)
- 著名教育家朱永新曾经提出新时代的教师应当具备四种精神 2
- 2018-2019学年人教版五年级数学第一学期全册教案(含教学计划)
- 传热学第四版完整版答案
- 情到真处文自美
- 2016连云港市情与连云港发展题库与答案(含真题)
- 新目标英语八年级上册第1—12单元知识讲解及练习含答案
- 不同类型的封箱机的特点
- 织机配件
- 朝鲜民主主义人民共和国外国投资企业及外国人税金法
- 意大利语名言1
- 2013-2018年中国分子蒸馏仪行业市场分析及投资可行性研究报告
- 2015安规考试复习题 - 图文
- 前景基础英语综合教程教师用书(复旦第四册)