Visual Basic 2005第4章.ppt_第1頁
Visual Basic 2005第4章.ppt_第2頁
Visual Basic 2005第4章.ppt_第3頁
Visual Basic 2005第4章.ppt_第4頁
Visual Basic 2005第4章.ppt_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第4章 數(shù)組、集合與結(jié)構(gòu),4.1 數(shù)組 4.2 集合 4.3 枚舉 4.4 結(jié)構(gòu),前 言,VB 2005提供了可以存儲復雜數(shù)據(jù)的幾種復合數(shù)據(jù)類型,其中包括數(shù)組、枚舉、集合、結(jié)構(gòu)。在許多場合,使用復合數(shù)據(jù)類型可以縮短和簡化程序。 本章主要介紹復合數(shù)據(jù)類型的概念和使用。,4.1 數(shù) 組,數(shù)組就是這樣的一種特殊變量類型,是用一個統(tǒng)一的名稱表示的、順序排列的一組變量的集合。數(shù)組中的變量稱為數(shù)組元素,每個變量都分配有一個序號(稱為下標或索引)來標志它們,因此數(shù)組元素又稱為下標變量。 本節(jié)主要介紹VB 2005的數(shù)組,包括數(shù)組的基本概念、數(shù)組的聲明以及如何應用數(shù)組。,4.1.1 數(shù)組的維數(shù),如果一個數(shù)組的

2、元素只有一個下標,則稱這個數(shù)組為一維數(shù)組。 例如,數(shù)組S有10個元素:S(0)、S(1)、S(2)、S(9),依次保存10個學生的一門功課的成績,則S為一維數(shù)組。 一維數(shù)組中的各個元素又稱為單下標變量。一維數(shù)組中的下標又稱為索引(Index)。 有兩個下標的數(shù)組稱為二維數(shù)組,其中的數(shù)組元素稱為雙下標變量。二維數(shù)組可以看成是一個表,也稱為“矩形數(shù)組”。 數(shù)組元素中下標的個數(shù)稱為數(shù)組的維數(shù),維數(shù)還可以稱為“秩”??梢酝ㄟ^為數(shù)組的每一維提供“索引”或“下標”來指定數(shù)組元素。在每一維中,元素都按照從索引0到該維的最大索引的順序連續(xù)排列。 在VB2005中數(shù)組維數(shù)最多可達到32維。,4.1.2 數(shù)組的聲

3、明,數(shù)組變量的聲明與其他變量的聲明一樣。在變量名后加上一對或幾對圓括號,即可表示它是數(shù)組而不是簡單變量。 1. 聲明單維數(shù)組 單維數(shù)組也稱為一維數(shù)組。在聲明單維數(shù)組時要指定它的數(shù)組名稱、大小、元素數(shù)據(jù)類型和訪問權(quán)限。 其語法格式如下: () As 下標下界默認從0開始。,例如: Dim myArray(5) As Integer 聲明了一個名稱為myArray的局部數(shù)組,有6個元素,下標索引從0到5 Public Sums(10) As Integer 聲明了一個名稱為Sums的公有數(shù)組,有11個元素,下標索引從0到10 可以在聲明后再給數(shù)組元素賦值,也可以在聲明時就賦值。 例如: Sums(

4、3) = 你好 給數(shù)組元素Sums(3)賦值一個字符串 Dim counters() As Integer = 1, 2, 3, 4, 5 聲明了一個名稱為counters的數(shù)組,有5個元素,同時給數(shù)組元素賦值 不允許給聲明時帶有數(shù)組元素初始數(shù)目的數(shù)組賦值。例如: Dim counters(4) As Integer = 1, 2, 3, 4, 5 聲明錯誤,2. 聲明多維數(shù)組 在聲明多維數(shù)組中,其語法格式如下: () As 例如: Dim myarr1(2, 3, 4, 5) As Integer 聲明一個名稱為myarr1的4維數(shù)組變量 聲明一個名稱為myarr2的二維數(shù)組變量,(2+1)

5、(3+1)=12個元素 Dim myarr2(2, 3) As Integer 聲明一個名稱為myarr3的三維數(shù)組變量,345=60個元素 Dim myarr3(2, 3, 4) As Integer 聲明arr數(shù)組的秩同時給數(shù)組賦值 Dim arr(,) As String = a, b, c, d, e, f,3. 動態(tài)數(shù)組 在程序中使用數(shù)組時,隨著程序的運行,可能數(shù)組原來的大小已經(jīng)不能滿足要求,那么就會遇到需要改變數(shù)組大小的情況。 VB 2005規(guī)定不能改變已聲明數(shù)組的維數(shù)(也稱為“秩”),但可以通過ReDim語句改變已聲明數(shù)組的元素個數(shù),也就是為數(shù)組變量重新分配存儲空間。 其語法格式

6、如下: ReDim Preserve () 說明: Preserve參數(shù)用來保留現(xiàn)有數(shù)組中的數(shù)據(jù)。,例如: 聲明MyArray為二維數(shù)組 Dim MyArray(,) As Double 聲明MyArray二維數(shù)組的元素個數(shù) ReDim MyArray(5, 5),對數(shù)組元素的操作如同對簡單變量的操作,與簡單變量不同的是,數(shù)組變量除了引用數(shù)組名之外,還要標明它的下標。 例如: Dim a(5) As Integer a(3)=10 TextBox2.Text = a(3),4.1.3 使用數(shù)組,4.1.4 多行文本框(RichTextBox)控件,VB 2005提供了多行文本框(RichTex

7、tBox)控件,來顯示多行文本信息。多行文本框控件與文本框最大的區(qū)別就是可以將結(jié)果以多行的形式顯示。它的屬性、方法和事件與文本框控件相似。 【例4-1】有一個55的矩陣,隨機產(chǎn)生25個兩位數(shù)賦值給該數(shù)組,求全部元素的平均值。,Dim myArray(4, 4) As Integer 在窗體級模塊聲明一個二維數(shù)組 命令按鈕“生成數(shù)組”的Click事件,生成一個二維數(shù)組 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button1.Click Dim i,

8、 j As Integer 聲明循環(huán)體變量 Dim str As String = 聲明用來數(shù)組顯示的字符串變量 For i = 0 To 4 For j = 0 To 4 myArray(i, j) = Int(Rnd() * 90) + 10 str = str & myArray & ( & i & , & j & ) & = & myArray(i, j) & Chr(10) Next Next RichTextBox1.Text = str 數(shù)組賦值給多行文本框顯示 End Sub, 命令按鈕“計算”的Click事件 Private Sub Button2_Click(ByVal s

9、ender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click Dim i, j, sum As Integer Dim average As Double For i = 0 To 4 For j = 0 To 4 sum = sum + myArray(i, j) 計算數(shù)組總和 Next Next average = sum / 25 計算數(shù)組平均值 TextBox1.Text = CStr(average) End Sub,4.1.5 列表框(ListBox)控件,下拉列表框一次只能顯示和選擇一個數(shù)據(jù)

10、項,但有時用戶需要顯示或選擇多個數(shù)據(jù)項。 VB 2005提供了列表框(ListBox)控件,列表框控件可以將所有結(jié)果顯示在一個列表中。 列表框控件常用屬性,列表框控件常用方法,【例4-2】求斐波那契數(shù)列。,【例4-2】 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim Fib(20), i As Integer ListBox1.Items.Clear() 初始化清空列表框 Fib(1) = 1 : Fib(2) =

11、1 給斐波那契數(shù)列的前兩個數(shù)組賦值 ListBox1.Items.Add(Fib( & 1 & )= & 1) 添加到列表框 ListBox1.Items.Add(Fib( & 2 & )= & 1) 添加到列表框 For i = 3 To 20 Fib(i) = Fib(i - 1) + Fib(i - 2) 求其他斐波那契數(shù)列的數(shù)組值 ListBox1.Items.Add(Fib( & i & )= & Fib(i) Next End Sub,【例4-3】設(shè)有10位學生的大學英語、離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)3門課程的成績。求每人的平均成績,各科的不及格的學生姓名。,【例4-3】 在所有事件的前面聲

12、明數(shù)組 Dim Student(9) As String Dim Stu_Score(9, 2) As Double 窗體的Load事件 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load Dim i, j As Integer 給數(shù)組分別賦值 Student(0) = 張 明 : Stu_Score(0, 0) = 80 : Stu_Score(0, 1) = 55 : Stu_Score(0, 2) = 90 Student(1) =

13、李大生 : Stu_Score(1, 0) = 85 : Stu_Score(1, 1) = 80 : Stu_Score(1, 2) = 86 Student(2) = 郭廣民 : Stu_Score(2, 0) = 70 : Stu_Score(2, 1) = 65 : Stu_Score(2, 2) = 73 Student(3) = 馬英英 : Stu_Score(3, 0) = 55 : Stu_Score(3, 1) = 70 : Stu_Score(3, 2) = 69 Student(4) = 趙 陽 : Stu_Score(4, 0) = 79 : Stu_Score(4,

14、1) = 46 : Stu_Score(4, 2) = 90 Student(5) = 楊大偉 : Stu_Score(5, 0) = 78 : Stu_Score(5, 1) = 89 : Stu_Score(5, 2) = 82 Student(6) = 王東平 : Stu_Score(6, 0) = 79 : Stu_Score(6, 1) = 79 : Stu_Score(6, 2) = 87 Student(7) = 劉小林 : Stu_Score(7, 0) = 70 : Stu_Score(7, 1) = 50 : Stu_Score(7, 2) = 48 Student(8)

15、= 姜珊珊 : Stu_Score(8, 0) = 78 : Stu_Score(8, 1) = 85 : Stu_Score(8, 2) = 89 Student(9) = 吳林林 : Stu_Score(9, 0) = 88 : Stu_Score(9, 1) = 89 : Stu_Score(9, 2) = 90, 將學生數(shù)組添加到列表中 For i = 0 To 9 ListBox1.Items.Add(Student(i) Next 將課程信息添加到下拉列表中 ComboBox1.Items.Add(大學英語) ComboBox1.Items.Add(離散數(shù)學) ComboBox1.

16、Items.Add(數(shù)據(jù)結(jié)構(gòu)) End Sub 下拉列表框的SelectedIndexChanged事件 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As _System.EventArgs) Handles ListBox1.SelectedIndexChanged Dim i As Integer Dim sum, avg As Single For i = 0 To 9 循環(huán)判斷每個列表框選項個成績數(shù)組 If ListBox1.GetSelected(i) = True

17、Then 判斷列表框中哪個選項被選中 TextBox1.Text = Stu_Score(i, 0) 大學英語成績 TextBox2.Text = Stu_Score(i, 1) 離散數(shù)學成績 TextBox3.Text = Stu_Score(i, 2) 數(shù)據(jù)結(jié)構(gòu)成績 sum = Stu_Score(i, 0) + Stu_Score(i, 1) + Stu_Score(i, 2) 計算總分 TextBox5.Text = sum avg = sum / 3 計算平均分 TextBox4.Text = Math.Round(avg, 1) 平均分只保留1位小數(shù) Exit For 計算結(jié)束,退

18、出ForNext循環(huán) End If Next End Sub, 命令按鈕“統(tǒng)計”的Click事件 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button1.Click Dim Course, Name As String Dim i As Integer Course = ComboBox1.Text Select Case Course 判斷下拉列表框選中哪門課程 Case Is = 大學英語 如果是大學英語 For i = 0 To 9 循環(huán)判

19、斷成績 If Stu_Score(i, 0) 60 Then 如果不及格 Name = Name & Student(i) & 挑出不及格學生姓名 End If Next Case Is = 離散數(shù)學 如果是離散數(shù)學 For i = 0 To 9 If Stu_Score(i, 1) 60 Then Name = Name & Student(i) & End If Next Case Is = 數(shù)據(jù)結(jié)構(gòu) 如果是數(shù)據(jù)結(jié)構(gòu) For i = 0 To 9 If Stu_Score(i, 2) 60 Then Name = Name & Student(i) & End If Next End Se

20、lect TextBox6.Text = Name 顯示不及格學生姓名 End Sub,4.1.6 進度條(ProgressBar)控件,由于有的數(shù)組比較大,在生成期間用戶經(jīng)常要觀察數(shù)組生成進度。VB 2005提供了進度條(ProgressBar)控件來提示進度。 進度條控件常用屬性,【例4-4】一個有100個元素的一維數(shù)組,隨機產(chǎn)生100個3位數(shù)整數(shù),輸出數(shù)組并計算數(shù)組的和。,【例4-4】 在所有事件的前面聲明數(shù)組 Dim a(100) As Integer 命令按鈕“生成數(shù)組”的Click事件 Private Sub Button1_Load(ByVal sender As Object,

21、 ByVal e As System.EventArgs) Handles _Me.Load Dim myString As String Dim i As Integer Randomize() myString = For i = 1 To 100 循環(huán)數(shù)組 賦給每個數(shù)組變量一個隨機數(shù) a(i) = CInt(Int(999 - 100 + 1) * Rnd() + 100) myString = myString & a(i) & Space(2) ProgressBar1.Value = i + 1,If i Mod 4 = 0 Then 如果每行顯示超過4個數(shù)據(jù) myString =

22、 myString & Chr(13) 連接一個回車換行符,換行顯示 End If Next Label1.Text = myString End Sub 命令按鈕“計算”的Click事件 Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) _Handles Button1.Click Dim i As Integer Dim sum As Double For i = 1 To 100 sum = sum + a(i) 計算數(shù)組總和 Next TextBox1.Text = sum En

23、d Sub,4.1.8 For EachNext語句,與ForNext語句類似,都是重復執(zhí)行指定的一組語句。但For EachNext語句專門用于數(shù)組或集合,對數(shù)組或集合中的每個元素重復一組操作。 其語法格式如下: For Each As In Exit For Next 說明: (1)用于循環(huán)訪問集合的元素。的數(shù)據(jù)類型必須是元素的數(shù)據(jù)類型或能夠隱式轉(zhuǎn)換到的類型。 (2)是可選項。如果尚未聲明,則是必選項,表示的數(shù)據(jù)類型。如果在此循環(huán)外聲明,則不能再重新聲明。 (3)選項必須引用對象集合或數(shù)組。,【例4-5】將【例4-4】的“計算”命令按鈕的Click事件代碼改寫如下: 命令按鈕“計算”的Cl

24、ick事件 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click Dim m As Integer Dim sum As Double For Each m In a m中存儲數(shù)組a()的元素值 sum = sum + m Next TextBox1.Text = sum End Sub,課后練習,1 數(shù)組的逆序 2 數(shù)組的排序 3 數(shù)組的查找 4 數(shù)組的復制,思考!,4.1.9 數(shù)組常用的屬性和方法,數(shù)組本質(zhì)上是一個類,它有許多屬

25、性和方法,可以調(diào)用屬性和方法來完成許多操作。程序員聲明一個數(shù)組變量,其實是由Array類生成了一個具體的數(shù)組對象。 Array數(shù)組常用屬性見表所示。,Array數(shù)組常用方法,【例4-6】聲明一個名為Student的String對象的數(shù)組,用學生姓名填充數(shù)組,可以存儲5個姓名。然后按姓名的字母順序?qū)?shù)組中的元素進行排序。 編寫事件代碼。 在所有的過程之前聲明數(shù)組 Dim student(4) As String Dim i As Integer = 0 命令按鈕“確定”的Click事件 Private Sub Button1_Click(ByVal sender As System.Object

26、, ByVal e As System.EventArgs) _Handles Button1.Click student(i) = TextBox1.Text 將鍵盤輸入的數(shù)據(jù)賦值給數(shù)組變量 ListBox1.Items.Add(student(i) 將數(shù)組值添加到列表框中 ListBox1.Refresh() 刷新列表框,將新添加數(shù)據(jù)顯示出來 i = i + 1 If i 4 Then 判斷添加數(shù)組個數(shù) Button1.Enabled = False 如果大于4個,超出數(shù)組范圍,則不能再添加 End If End Sub, 命令按鈕“排序”的Click事件 Private Sub Butt

27、on2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click Array.Sort(student) 數(shù)組重新排序 ListBox1.Items.Clear( ) 列表框數(shù)據(jù)清空 Dim a As Integer For a = 0 To 4 重新給列表框添加數(shù)據(jù) ListBox1.Items.Add(student(a) Next ListBox1.Refresh( ) 刷新列表框,將新添加數(shù)據(jù)顯示出來 End Sub,4.1.10 快捷方式生成數(shù)組,在VB 2005中

28、,程序員除了可以在代碼編輯窗口中,直接聲明數(shù)組和調(diào)用數(shù)組,還可以通過快捷方式“插入代碼段”來聲明數(shù)組和調(diào)用數(shù)組。 程序員在代碼編輯窗口中,單擊鼠標右鍵,在快捷菜單中選擇“插入代碼段”選項。系統(tǒng)自動顯示一個下拉列表,選擇“集合和數(shù)組”選項。再選擇相應的選項,系統(tǒng)自動插入相應代碼。,4.1.11 VB 2005中控件對象數(shù)組,一個應用程序可能會有許多相同的控件對象,例如多個文本框、多個標簽等。這些控件對象如果具有相同的屬性、方法和事件,也可以將它們看作是一個文本框?qū)ο髷?shù)組、標簽對象數(shù)組。 在VB 2005中,不再支持控件數(shù)組,但可以使用事件模型來重復和擴展許多控件數(shù)組的功能。,1. 共享事件處理程

29、序 在VB 6.0中,控件數(shù)組可用于指定一組共享事件集的控件。這些控件應該為相同的類型,并且具有相同的名稱。 VB 2005允許任何事件處理程序處理來自多個控件的事件,即使是具有不同名稱和不同類型的控件。 在VB 2005中,事件處理程序的Handles子句指定事件將處理的控件。只需要在控件共享相同的事件的過程首部參數(shù)Handles后面加上共享的控件名稱和事件就可以了。這樣可以簡化程序代碼的編寫。 例如,可以向窗體添加兩個Button控件(Button1和Button2)以及一個CheckBox控件(CheckBox1),然后創(chuàng)建一個事件處理程序來處理這三個控件的Click事件。 Privat

30、e Sub MixedControls.Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, CheckBox1.Click,2. 訪問控件數(shù)組 VB 6.0使用Index屬性訪問控件數(shù)組。例如,若要清除控件數(shù)組中所有TextBox控件的文本,可將Index屬性作為循環(huán)變量循環(huán)訪問控件數(shù)組。 VB 2005中,控件沒有Index屬性,但是可以使用另一個公共屬性(例如TabIndex屬性)來實現(xiàn)相同的功能;也可使用Control類的Cont

31、rolCollection循環(huán)訪問窗體或容器上的控件。,【例4-7】三個Button命令按鈕控件共享相同事件。 編寫事件代碼。 Dim week(7) As String 以對象名來區(qū)分命令按鈕對象 Private Sub MixedControls_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click Dim i As Integer Select Case DirectCast(sender, Button

32、).Name 判斷Button名稱 Case Button1.Name 如果是Button1 TextBox1.Text = 今天是 & Today Case Button2.Name 如果是Button2 TextBox1.Text = 現(xiàn)在是 & TimeOfDay Case Button3.Name 如果是Button3 For i = 1 To 7 If i = Weekday(Now) Then TextBox1.Text = 現(xiàn)在是 & week(i) End If Next End Select End Sub, 以對象的TabIndex屬性來區(qū)分命令按鈕對象 Private S

33、ub Buttones_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click Dim i As Integer Select Case sender.TabIndex 判斷TabIndex序號 Case 0 如果是Button1 TextBox1.Text = 今天是 & Today Case 1 如果是Button2 TextBox1.Text = 現(xiàn)在是 & TimeOfDay Case 2 如果是Butt

34、on3 For i = 1 To 7 If i = Weekday(Now) Then TextBox1.Text = 現(xiàn)在是 & week(i) End If Next End Select End Sub 窗體的Load事件 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load week(1) = 星期日 week(2) = 星期一 week(3) = 星期二 week(4) = 星期三 week(5) = 星期四 week(6) = 星

35、期五 week(7) = 星期六 End Sub,4.1.12 復選列表框(CheckedListBox)控件,復選框控件一般都要顯示多個選項,因此可以將這些選項看作是一個組??梢赃x中單個選項,也可以選中多個選項。 VB 2005提供了復選列表框(CheckedListBox)控件,它結(jié)合了復選框控件和列表框的特征,來明顯的表示選中選項。復選列表框控件擴展了列表框控件。它幾乎能完成列表框可以完成的所有任務,并且還可以在列表中的項旁邊顯示復選標記。,【例4-9】利用復選列表框控件選擇選修課程。 窗體的Load事件代碼,在第1個復選列表框中添加選項 Private Sub Form1_Load(B

36、yVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 向CheckedListBox中添加數(shù)據(jù) CheckedListBox1.Items.Add(大學英語) CheckedListBox1.Items.Add(大學語文) End Sub, 命令按鈕的事件代碼,以對象名來區(qū)分命令按鈕對象 Private Sub MixedControls_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But

37、ton1.Click, Button2.Click, Button3.Click, Button4.Click Dim i, j As Integer Select Case DirectCast(sender, Button).Name Case Button1.Name 向CheckedListBox2中添加選項 For i = 0 To CheckedListBox1.CheckedItems.Count - 1 If CheckedListBox1.CheckedItems.Count 0 Then CheckedListBox2.Items.Insert(i,_ CheckedLis

38、tBox1.CheckedItems(i).ToString) End If Next i 從CheckedListBox1中移除選項 For j = CheckedListBox1.CheckedItems.Count - 1 To 0 Step -1 CheckedListBox1.Items.Remove(CheckedListBox1.CheckedItems.Item(j) Next j ,4.1.13 頁框(TabControl)控件,有的應用程序由于需要較多的控件,在1個窗體上顯示顯的有些擁擠,甚至于顯示不出來。VB 2005中提供頁框(TabControl)控件,可以在1個窗體

39、上顯示多頁面信息。 頁框有一組選項卡,可以利用TabPages屬性添加或刪除選項卡。,【例4-10】在窗體上頁框的不同選項卡上顯示大寫字母ASCII編碼表和小寫字母ASCII編碼表。,【例4-10】 窗體的Click事件 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load Dim i, j As Integer Dim s, t As String For i = 65 To 90 s = s & Chr(i) & = & CStr(i)

40、& Space(1) j = j + 1 If j = 5 Then s = s & Chr(13) j = 0 End If Next RichTextBox1.Text = s j = 0 For i = 97 To 122 t = t & Chr(i) & = & CStr(i) & Space(1) j = j + 1 If j = 5 Then t = t & Chr(13) j = 0 End If Next RichTextBox2.Text = t End Sub,4.2 集 合,一般來說,集合是一個用于對相關(guān)對象進行分組和管理的對象。 例如,每個Form均具有一個控件集合,此

41、集合是一個表示該窗體上所有控件的對象。它允許按照控件的索引在集合中檢索控件,以及使用For EachNext語句來循環(huán)訪問集合中的元素。 本節(jié)主要介紹利用VB 2005提供的Collection集合的定義和創(chuàng)建。,4.2.1 集合概述,集合(Collection)是一種將一組相關(guān)項組合在一起的方法。存在許多不同類型的集合。出于多種目的,VB2005不提供單獨的Collection集合數(shù)據(jù)類型。集合的功能是通過 .NET框架類庫的System.Collections命名空間提供的。 VB 2005中使用了預定義集合。例如窗體上的對象都是保存在同一文件中,而且VB將這些對象視為同一組的成員,那么窗

42、體上所有對象合稱為Controls集合。 Controls集合是在打開新窗體自動創(chuàng)建的。當向窗體添加新對象,該對象即成為該集合的一部分。程序中每個集合都有唯一的名稱,因此程序中可將其作為一個獨立單元。如果一個項目中有多個窗體,可以使用不同的Controls集合訪問窗體之間的變量等。,例如,在窗體上有3個標簽: Controls(0).Text = 計算機 Controls(1).Text = 打印機 Controls(2).Text = 照相機 說明:通過引用Controls集合里不同的對象(通過索引值),可以給窗體中的標簽賦值。 VB 2005也可以創(chuàng)建自己的集合以組織和操作對象自己的集合。

43、與窗體的Controls集合類似,Collection類也提供了使用For EachNext來循環(huán)訪問元素以及按照索引檢索元素的內(nèi)置功能。,4.2.2 創(chuàng)建集合,創(chuàng)建集合的方法采用的是創(chuàng)建對象的方法,其語法格式如下: As New Collection 說明:集合中的元素的索引值是從1開始的。 例如,創(chuàng)建一個集合變量User: Dim User As New Collection,4.2.3 使用集合,在創(chuàng)建一個集合后,可以使用集合的方法來操作集合元素。 常用方法有:Add方法(添加)、Remove方法(移除)、Clear方法(清空)、Contains方法(判斷某個元素是否存在)等。還可以用集

44、合的屬性來分析集合,常用的屬性有:Count屬性(集合元素數(shù)量)、Item屬性(集合中特定成員)。,【例4-11】定義一個集合people,存儲學生學號和姓名,對集合進行操作。,【例4-11】 Imports System.Collections Public Class Form1 Dim people As New Collection() 創(chuàng)建個名為people的集合 命令按鈕“添加”的Click事件 Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handle

45、s Button1.Click people.Add(TextBox2.Text) 向集合添加數(shù)據(jù) TextBox1.Clear() TextBox2.Clear() End Sub, 命令按鈕“統(tǒng)計”的Click事件 Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click TextBox4.Text = people.Count 統(tǒng)計集合中數(shù)據(jù)項個數(shù) End Sub 命令按鈕“查找”的Click事件 Private Sub butt

46、on3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button3.Click Dim name As String name = Trim(TextBox3.Text) If people.Contains(name) Then 查詢集合數(shù)據(jù) Label5.Text = 找到了 & name Else Label5.Text = 沒有找到 & name End If End Sub End Class,除了使用集合的方法來操作集合元素,還可以使用For Each.Next語句遍歷整個集合

47、。其語法格式如下: For Each As In Exit For Next,【例4-12】使用For Each.Next語句遍歷people集合。將【例4-10】中的Find_Click事件代碼改寫如下: Private Sub Find_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Find.Click Dim name, c As String name = Trim(TextBox3.Text) 在birthdays集合中查找name元素 For Each c In people If

48、 c = name Then Label5.Text = 找到了 & name Exit For Else Label5.Text = 沒有找到 & name End If Next End Sub,4.3 枚 舉,編程時,有時需要用到一系列的相互關(guān)聯(lián)的常量,例如在使用顏色時,不希望記憶那些枯燥的顏色值,那么這時候就可以定義成常量,用熟悉的英文名字來命名顏色。但是,通常的常量定義只能一個一個地定義,而常用的顏色又是多種多樣的。這時就可以使用VB 2005的枚舉類型。 本節(jié)主要介紹枚舉類型的使用。,4.3.1 聲明枚舉,枚舉類型通過Enum語句來聲明,其語法格式如下: Enum = 常數(shù)表達式

49、= 常數(shù)表達式 End Enum 說明: 1) 使用Enum關(guān)鍵字聲明枚舉類型。 2)是定義枚舉中的常數(shù)。默認情況下,枚舉中的第一個常數(shù)初始化為0,后面的常數(shù)初始化為比前面的常數(shù)多1的值。 3) 可使用賦值語句將值顯式賦予枚舉中的常數(shù)??少x予任何整數(shù)值,包括負數(shù)。 4) 枚舉類型通常是邏輯上彼此相關(guān)的不變值,而且只能在命名空間或模塊級別使用Enum。,4.3.2 使用枚舉,聲明枚舉變量之后,就可以使用該枚舉類型的變量,然后使用該變量存儲枚舉常數(shù)的值。若要引用枚舉類型變量的成員,其語法格式如下: .,【例4-13】聲明一個枚舉類型,用來表示星期名稱。在本文框中輸入星期名稱,輸出相應的星期數(shù)。,

50、聲明1個名為Days的枚舉類型 Public Enum Days Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 Sunday = 7 End Enum Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim weekday As String weekday = TextBox1.Text Select Case weekday

51、 Case Monday Label2.Text = Days.Monday Case Tuesday Label2.Text = Days.Tuesday End Select End Sub,4.3.3 快捷方式生成枚舉,在VB 2005中,程序員也可以通過快捷方式“插入代碼段”來操作枚舉。 程序員在代碼編輯窗口中,單擊鼠標右鍵(注意:應該將鼠標移至所有事件之外),在快捷菜單中選擇“插入代碼段”選項。系統(tǒng)自動顯示一個下拉列表,選擇“通用代碼模式”選項,再選擇“類型”選項,選擇相應的選項。,4.4 結(jié) 構(gòu),在一些實際應用中,有些數(shù)據(jù)是相互聯(lián)系的,但它們卻是不同類型的數(shù)據(jù),為了把它們組合成一個有機的整體,就需要讓單個變量保存這幾個數(shù)據(jù),以便在程序中引用這些數(shù)據(jù)。例如,一個雇員的基本信息包括的姓名、電話分機號和薪金等數(shù)據(jù),這些數(shù)據(jù)類型各不相同,但它們都是雇員的基本信息,因此把上述不同類型數(shù)據(jù)作為一個整體來進行處理。可以定義一個結(jié)構(gòu)并將它用于單個雇員變量。 另外,結(jié)構(gòu)和枚舉類型一樣作為一種數(shù)據(jù)類型來使用,而且結(jié)構(gòu)的各成員可以定義各自的訪問權(quán)限。可以合并不同類型的數(shù)據(jù)項來創(chuàng)建結(jié)構(gòu)。結(jié)構(gòu)將一個或多個“元素”彼此關(guān)聯(lián)并且將它們與結(jié)構(gòu)本身關(guān)聯(lián)。聲明了結(jié)構(gòu)后,它將成為“復合數(shù)據(jù)類型”,然后就可以聲明該類型的變量。 本節(jié)主要介紹結(jié)構(gòu)的定義和使用。,4.4.1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論