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