




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第六章第六章 循環(huán)處理循環(huán)處理6.1 循環(huán)語句循環(huán)語句6.2 列表框及列表項的循環(huán)處理列表框及列表項的循環(huán)處理6.3 組合框組合框6.1 循環(huán)語句循環(huán)語句重復執(zhí)行一種或一組操作的情況,例如,計算5!。5!=1*2*3+*4*5,需要重復執(zhí)行乘法運算,將1、2、3、4、5逐個相乘,得到計算結(jié)果。這種重復執(zhí)行的操作稱為循環(huán)處理。在VB中,循環(huán)操作是yoFor語句和Do While語句。對有些對象的操作也常常需要通過循環(huán)逐個處理,如在列表框、組合框等控件中對各個數(shù)據(jù)項的逐個處理,就是利用了循環(huán)操作。6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)分析計算5!的過程,了解循環(huán)操作??梢钥吹?,每次計算是在
2、第1次計算:1!= 1第2次計算:2!= 1 * 2 = 1!*2第3次計算:3!= 1 * 2 * 3 = 2!*3第4次計算:4!= 1 * 2 * 3 * 4 = 3!*4第5次計算:5!= 1 * 2 * 3 * 4 * 5 = 4!*5上一次計算結(jié)果的基礎上進行的,即:第1次計算1!。第2次計算2!,2!等于1!*2。第3次計算3!,3!等于2!*3。重復執(zhí)行5次,得到5!。用流程圖描述上述算法,如圖所示。6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)VB中,對于這種能夠確定重復執(zhí)行次數(shù)的循環(huán),常使用For語句。以下是計算5!的程序段。其中,變量result用于保存每次計算的結(jié)果,初
3、始值為1。變量i記錄循環(huán)的次數(shù)。 result = 1 For i = 1 To 5 Step 1 result = result * i Next i Print result For語句中i用來控制循環(huán)次數(shù),稱為循環(huán)變量。循環(huán)變量的值在循環(huán)過程中是不斷變化的,本例中i的初始值指定為1,終止值指定為5,“step 1”表示每執(zhí)行完一次循環(huán)體后i的值增加1。For語句中需要重復多次執(zhí)行的語句(本例中為“result = result * i”)稱為循環(huán)體。6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)For循環(huán)語句的一般格式如下:For = To Step 增量增量 循環(huán)體循環(huán)體 Exit F
4、orNext 其中:方括號內(nèi)的內(nèi)容是可選的,即根據(jù)需要決定是否包含此項。6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)計算5!的過程示例如右表:如果變量的增量為1時,Step子句可以省略。即:For i = 1 To 5 。循環(huán)次數(shù)i值result表達式result值11result *i=1*1122result *i=1*2233result *i=2*3644result *i=6*42455result *i=24*5120說明:當循環(huán)變量的值超過循環(huán)變量終值時,結(jié)束循環(huán)。因此result的值為5時,還要執(zhí)行一次循環(huán),然后循環(huán)變量的值變?yōu)?,超過了循環(huán)變量終值(5),此時循環(huán)自動終止。
5、6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)【例6-1】使用For循環(huán)移動圖片。設計一個程序,當單擊“開始”在命令按鈕時,窗體上的圖片由左而右移動,每次移動10個單位。在窗體上畫一個名稱為picCloud的圖片框,然后為圖片框加載一個圖片。窗體上還有名稱分別為cmdStart和cmdExit的兩個命令按鈕,其標題分別為“開始”和“退出”。窗體界面如圖所示。6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)圖片從左向右移動,實際上就是改變圖片框左邊界的坐標,使得其左邊界到窗體左邊界的距離每次增加10。用循環(huán)實現(xiàn)這種重復移動圖片的操作。“開始” 的單擊事件過程如下:Private Sub cmdSt
6、art_Click() For i = 1 To 300 picCloud.Left = picCloud.Left + 10 Next iEnd Sub因為計算機的處理速度非常快,幾乎感覺不到執(zhí)行300次移動圖片的操作。若要能夠明顯的感到圖片框的移動,可以在每次移動圖片框之后增加一段時間的延遲,再移動圖片框。當然,也可以采用其他方式。【例6-2】:從隨機產(chǎn)生的10個數(shù)據(jù)中選出其中的偶數(shù)根據(jù)題義,考慮程序的基本思路。首先要產(chǎn)生10個隨機數(shù),并顯示在標簽中。然后從中選擇出偶數(shù),顯示在另一個標簽中。如圖。6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)窗體上有4個標簽,其中兩個顯示說明文字。另兩個顯
7、示數(shù)據(jù),其中名稱為lblNumber1的標簽用于顯示10個隨機數(shù),名稱為lblNumber2的標簽用于顯示找出的偶數(shù)。2個命令按鈕的名稱分別為cmdOK和cmdExit,標題分別為“處理”和“退出”?!疤幚怼泵畎粹o的功能:產(chǎn)生10個100以內(nèi)的隨機數(shù),顯示在lblNumber1中。從10個數(shù)中選出所有偶數(shù),顯示在lblNumber2中。6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)6.1.1 用用For語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)Private Sub cmdOK_Click() For i = 1 To 10 x = Int(100 * Rnd) lblNumber1.Caption = lb
8、lNumber1.Caption + Str(x) If x Mod 2 = 0 Then lblNumber2.Caption = lblNumber2.Caption + Str(x) End If NextEnd Sub條件表達式x Mod 2 = 0用于判斷x被2除的余數(shù)是否是0,即判斷x是否是偶數(shù)。產(chǎn)生一個0100以間(包括0,不包括100)的隨機數(shù)Str(x)的含義是將數(shù)值數(shù)據(jù)變?yōu)樽址麛?shù)據(jù)將所有隨機數(shù)連接為一個字符串,并賦值給lblNumber1的Caption屬性6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)For語句適用于處理確切知道循環(huán)次數(shù)的重復處理操作?!纠?-1】移動圖片
9、的問題中,使用For循環(huán),確定循環(huán)300次。但是實際上,由于窗體大小不同,每次移動的步長不同,圖片到達窗體右邊界需要的次數(shù)是不同的。可能執(zhí)行200次循環(huán)就到達了窗體的邊界,也可能執(zhí)行300循環(huán),卻只移動到窗體的中間。對于循環(huán)次數(shù)難以確定的操作,使用Do循環(huán)更適合。Do循環(huán)可以不限定循環(huán)的次數(shù),而是根據(jù)循環(huán)條件決定是否結(jié)束循環(huán)。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)Do循環(huán)語句的簡單格式如下: Do While Do While Exit DoExit Do Loop Loop Do While的含義是:當指定的“循環(huán)條件”為真時,執(zhí)行循環(huán)體。當條件為假時,不再執(zhí)行循環(huán)。對于Do循環(huán)結(jié)構(gòu)
10、,如果沒有“循環(huán)條件”,就構(gòu)成一種最簡單的Do循環(huán)。若在循環(huán)體中沒有GoTo 、End等語句,就會反復執(zhí)行循環(huán)體,永不停止。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)例:計算輸入數(shù)據(jù)的累加和。從鍵盤先后輸入若干正整數(shù),計算并顯示這些數(shù)據(jù)的累加和,當輸入0時結(jié)束。界面設計如下圖所示。控件屬性設置見右表。對象屬性設置標簽1(名稱)lblTitle1Caption輸入的數(shù)據(jù)標簽2(名稱)lblTitle2Caption累加和標簽3(名稱)lblNumberCaption(置空)標簽4(名稱)lblResultCaption(置空)命令按鈕1(名稱)cmdCalaCaption計算命令按鈕2(名稱
11、)cmdExitCaption退出6.1.2.用用 Do語句語句實現(xiàn)循環(huán)實現(xiàn)循環(huán)計算累加和的算法流程如右圖:6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)單擊命令按鈕“計算”,執(zhí)行cmdCala_Click事件過程。Private Sub cmdCala_Click() Dim Sum As Integer Dim varInteger As Integer Sum = 0 varInteger = Val(InputBox(輸入數(shù)據(jù),若輸入0,則結(jié)束) Do While varInteger 0 Sum = Sum + varInteger lblNumber.Caption = lblNu
12、mber.Caption & Str$(varInteger) lblResult.Caption = Str$(Sum) varInteger = Val(InputBox(輸入數(shù)據(jù),若輸入,則結(jié)束) LoopEnd Sub6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)cmdCala_Click過程中定義兩個整型變量:Sum:存儲累加和varInteger:存儲每次輸入的整數(shù)。若輸入的值不是0,滿足Do While的循環(huán)條件,執(zhí)行循環(huán)體,計算累加和Sum值,并將varInteger值顯示在lblNumber中,將Sum值顯示在標簽lblResult中。然后繼續(xù)輸入數(shù)據(jù),重復上述操作,
13、直到輸入0,結(jié)束。注意,Do While語句之前的 varInteger = Val(InputBox(“”)語句必不可少。若無此語句,varInteger沒有被賦初值,默認值為0,則循環(huán)條件varInteger 0為假,不執(zhí)行循環(huán)體。這樣,永遠不會執(zhí)行到循環(huán)體的語句。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)Do循環(huán)語句的一般格式有以下兩種:(1) Do While | Until Exit Do Loop (2)Do Exit Do Loop While | Until 第1種格式為先判斷,后執(zhí)行。如果不滿足,可能一次都不執(zhí)行。第2種格式為先執(zhí)行,后判斷,不論是否滿足,至少執(zhí)行一次6.
14、1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)While 表示當為真時,執(zhí)行的語句;Until為假,執(zhí)行。Exit Do表示退出循環(huán),執(zhí)行Loop之后的第一條語句。修改以上程序,使用第2種格式,完成相同的功能。算法流程如右圖所示。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)Private Sub cmdCala_Click() Dim Sum As Integer Dim varInteger As Integer Sum = 0 Do varInteger = Val(InputBox(輸入數(shù)據(jù),若輸入,則結(jié)束) Sum = Sum + varInteger If varInteger 0 T
15、hen lblNumber.Caption = lblNumber.Caption & Str$(varInteger) End If lblResult.Caption = Str$(Sum) Loop While varInteger 0End Sub使用DoLoop While,不論條件如何,循環(huán)體至少要執(zhí)行一次,而后執(zhí)行條件判斷語句Loop While,當滿足循環(huán)條件時再次執(zhí)行循環(huán)體,不滿足條件時結(jié)束循環(huán)If varInteger 0語句的作用是為了避免將最后輸入的0顯示在標簽中6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)例:使用Do Until Loop結(jié)構(gòu),Until子句
16、是當指定條件為真時終止循環(huán)。Private Sub cmdCala_Click() Dim Sum As Integer Dim varInteger As Integer Sum = 0 varInteger = Val(InputBox(輸入數(shù)據(jù),若輸入,則結(jié)束) Do Until varInteger = 0 Sum = Sum + varInteger lblNumber.Caption = lblNumber.Caption & Str$(varInteger) lblResult.Caption = Str$(Sum) varInteger = Val(InputBox(輸
17、入數(shù)據(jù),若輸入,則結(jié)束) LoopEnd Sub先輸入整數(shù)varInteger,然后測試是否滿足循環(huán)條件。語句Do Until varInteger = 0的含義是當變量varInteger的值等于0時結(jié)束循環(huán)。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)當然,Until語句也可以在Loop子句中,將程序改寫為:Private Sub command1_Click() Dim Sum As Integer Dim varInteger As Integer Sum = 0 Do varInteger = Val(InputBox(輸入數(shù)據(jù),若輸入,則結(jié)束) Sum = Sum + varIn
18、teger If varInteger = 0 Then lblNumber.Caption = lblNumber.Caption & Str$(varInteger) End If lblResult.Caption = Str$(Sum) Loop Until varInteger = 0End Sub以上程序?qū)ntil子句移到了Loop的后面。區(qū)別在于,先執(zhí)行,然后進行指定條件的測試,即第一次進入是無條件的,無論如何都要執(zhí)行一次。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)使用Do循環(huán)移動圖片。前例采用固定處理次數(shù)的方式移動圖片。現(xiàn)改成圖片從窗體左側(cè)向窗體右側(cè)移動,移動到窗
19、體的右邊界停止移動。即圖片框的右邊界到達窗體的右邊界時停止移動?!伴_始”命令按鈕的單擊事件過程如下:Private Sub cmdStart_Click() Do picCloud.Left = picCloud.Left + 50 Loop While picCloud.Left + picCloud.Width 2),判斷是否為素數(shù)。根據(jù)題意,設計窗體界面和解題算法。窗體如下圖??丶膶傩栽O置見右表。對象屬性設置標簽1(名稱)lblNumberCaption(置空)標簽2(名稱)lblResultCaption(置空)命令按鈕1(名稱)cmdFindCaption判斷素數(shù)命令按鈕2(名稱)
20、cmdInputCaption輸入數(shù)據(jù)6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)輸入數(shù)據(jù)的操作:先清空標簽中的內(nèi)容,然后輸入數(shù)據(jù),用IsNumeric函數(shù)判斷輸入的是否是數(shù)值數(shù)據(jù)。若符合要求,顯示在標簽lblNumber中;若不是數(shù)值數(shù)據(jù),給出提示信息,并要求重新輸入數(shù)據(jù)。Private Sub cmdInput_Click() Dim n As Integer lblNumber.Caption = lblResult.Caption = x = InputBox(輸入一個整數(shù)!) If Not IsNumeric(x) Then MsgBox 數(shù)據(jù)有誤,請重新輸入! Else lblN
21、umber.Caption = x End IfEnd Sub程序包括兩部分:輸入整數(shù)、判斷是否是素數(shù)。程序包括兩部分:輸入整數(shù)、判斷是否是素數(shù)。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)判斷某整數(shù)是否是素數(shù):按照定義依次用2n-1之間的整數(shù)除n。若n能被任何一個數(shù)整除,則不是素數(shù)。思路:設置一Boolean類型變量flag,初值為False。若n能被某整數(shù)整除,將flag值改為True,表明n能被整除,不是素數(shù)。循環(huán)結(jié)束時,若flag值仍為False,表示n未被任何一個整數(shù)整除,該數(shù)為素數(shù)。算法如圖所示。6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)判斷素數(shù)的事件過程如下:Private
22、 Sub cmdFind_Click() Dim flag As Boolean n = Val(lblNumber.Caption) flag = False For i = 2 To n - 1 判斷 n 是否能被2n-1數(shù)整除 If (n Mod i) = 0 Then flag = True Next i If flag Then n曾被某個整數(shù)整除過 lblResult.Caption = 不是素數(shù)! Else n 從未被整除 lblResult.Caption = 是素數(shù)! End IfEnd Sub 運行程序,設輸入9,第1次循環(huán),i=2,(9 mod 2)的值為1,不滿足If條
23、件,flag值不變,仍為False。第2次執(zhí)行循環(huán),i=3,(9 mod 3)的值為0,滿足If條件,flag = True。繼續(xù)執(zhí)行后續(xù)的循環(huán)。If語句根據(jù)flag值判定n是否被整除過。若flag為True,表明被整除過,不是素數(shù)6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)運行程序后,單擊“輸入數(shù)據(jù)”按鈕,在輸入框中輸入13,在標簽lblNumber中顯示這個數(shù),如圖a所示。再單擊“判斷素數(shù)”按鈕,在標簽lblResult中顯示判定結(jié)果“是素數(shù)”。運行程序后,窗體如圖b所示。ab6.1.2.用用 Do語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)前面介紹判別素數(shù)的方法是:當整數(shù)n不能被2n-1之間的任一整數(shù)整除
24、,則n是素數(shù)。實際上,只需把n被2 之間的任一整數(shù)整除,若都除不盡,則n就是素數(shù)。例如,判別17是否素數(shù),不必把17被216除,只要被24(4是 的整數(shù)部分)即可。如果17不能被2、3和4整除,17肯定是一個素數(shù)。因此,程序中循環(huán)變量的終值可以由(n-1)改為n的平方根,即sqr(n),或Int(sqr(n)。n176.1.3 循環(huán)的嵌套循環(huán)的嵌套在一個循環(huán)體內(nèi)又完整地包含另一個循環(huán),稱為循循環(huán)的嵌套環(huán)的嵌套。For循環(huán)、Do循環(huán)都可以在循環(huán)中再嵌套循環(huán),而且可以在一個For循環(huán)中包含一個Do循環(huán),也可以在一個Do循環(huán)中包含一個For循環(huán)。例:找出100200間的全部素數(shù),只需要依次對這個范圍
25、內(nèi)的數(shù)據(jù)進行判定即可。題目要求找出100到200之間的素數(shù)。但根據(jù)常識,偶數(shù)一定不是素數(shù)。因此循環(huán)從101開始,且步長為2,即每次循環(huán)只對101、103、105等奇數(shù)進行判斷。這樣可以減少循環(huán)次數(shù),節(jié)約程序的運行時間。6.1.3 循環(huán)的嵌套循環(huán)的嵌套Private Sub Form_Click() Dim flag As Boolean k = 0 For i = 101 To 200 Step 2 flag = False For j = 2 To Sqr(i) If (i Mod j) = 0 Then flag = True If flag = True Then Exit For Ne
26、xt j If Not flag Then Print i; k = k + 1 If k Mod 5 = 0 Then Print End If NextEnd Sub這個for循環(huán)判斷i是否為素數(shù),算法基本與前例相同。區(qū)別在于For循環(huán)中的Exit For。含義是只要有flag=True,表示i能夠被整除,此時,盡管可能還沒有完成循環(huán),但繼續(xù)循環(huán)判斷沒有意義,使用Exit For提前結(jié)束循環(huán)6.1.3 循環(huán)的嵌套循環(huán)的嵌套注意:Print語句中變量之后有“;”,表示顯示該變量的內(nèi)容后不換行,只留一個空格,然后顯示下一個素數(shù)。若素數(shù)很多,就要換行顯示。設置變量k,用于記錄已經(jīng)顯示的素數(shù)的個數(shù)
27、。找到一個素數(shù)后,就使k的值增加1。當k的值能被5整除時,執(zhí)行一個空print語句,作用是換行。如圖所示是每輸出5個素數(shù)就換到下一行繼續(xù)輸出的運行效果。6.1.3 循環(huán)的嵌套循環(huán)的嵌套例例:顯示乘法九九表。:顯示乘法九九表。先寫出計算并顯示11=1,12=2,,19=9的程序段如下: i = 1 For j = 1 To 9 p = i * j Print p; Next j6.1.3 循環(huán)的嵌套循環(huán)的嵌套在此基礎,增加一層外循環(huán),使i由1變到9,實現(xiàn)九九表。程序段如下:Private Sub Form_Click() For i = 1 To 9 For j = 1 To 9 p = i *
28、 j Print p; Next j Print Next iEnd Sub程序共輸出9行,每行9個算式。第1行為11、12、19的乘積;第2行為21、22、29的乘積;第9行為91、92、99的乘積。通過分析這個程序段的流程,可以更深入地了解嵌套循環(huán)的概念,并改進輸出格式。6.1.3 循環(huán)的嵌套循環(huán)的嵌套程序段流程如下圖所示:Private Sub Form_Click() For i = 1 To 9 For j = 1 To i p = i * j Print Tab(j - 1) * 9); i & * & j & = & p; Next j Print
29、 Next iEnd Sub6.1.3 循環(huán)的嵌套循環(huán)的嵌套程序的運行結(jié)果如下圖:6.2列表框及列表項的循環(huán)處理列表框及列表項的循環(huán)處理常常有這樣的情況:從列出的若干個列表項中任意選擇一項,并對其作某種處理。列表框控件:列表框控件:方便地解決列表選擇的問題。在列表框中,放入若干個列表項,可以選擇其中的一個或多個列表項。如果放入的列表項較多,超過了列表框的長度,則系統(tǒng)會自動在列表框邊上加一垂直滾動條,通過移動滾動條可以使列表框中的內(nèi)容上下滾動,以便能夠看到全部內(nèi)容。6.2.1向列表框添加列表項向列表框添加列表項列表框中能夠列出許多列表項。列表框與文本框最主要的區(qū)別在于列表框控件能夠顯示多行文本,
30、而且每行文本是一個可以獨立處理的列表項。例如,添加或刪除一個列表項。這些列表項既可以在設計時直接指定,也可以在程序運行時添加到列表框中。從實際情況考慮,往往是通過程序添加列表項。6.2.1向列表框添加列表項向列表框添加列表項通過例題說明使用AddItem方法向列表框中添加列表項。例:設計一個簡易圖片瀏覽器程序在列表框中顯示所有圖片的名稱,選擇其中一個圖片名稱,即雙擊列表框中列表項,在右側(cè)的圖片框中顯示相應的圖片。設計窗體, 包含1個列表框、2個命令按鈕,2個無邊框的標簽,1個圖片框,窗體外觀見圖。6.2.1向列向列表框添加列表框添加列表項表項各控件的屬性設置見表 。對象屬性設置窗體(名稱)Fo
31、rm1列表框(名稱)lstPicture命令按鈕1(名稱)cmdClearCaption清除命令按鈕2(名稱)cmdExitCaption退出 標簽1(名稱)lblTitle2Caption請選擇圖片名稱 標簽2(名稱)lblTitle2Caption選中的圖片圖片框(名稱)picPicture6.2.1向列表框添加列表項向列表框添加列表項在窗體上添加列表框的方法:單擊工具箱中的列表框控件 (ListBox),然后在窗體中適當位置拖拉鼠標,畫出所需的大小。向列表框添加各個列表項的方法:一種方法是從屬性窗口中設置列表框的列表項。操作方法是在列表框的屬性窗口中選擇List屬性,單擊該屬性名稱的右側(cè)
32、,出現(xiàn)一個圖標 ,單擊該圖標,打開列表項輸入框,直接輸入各個列表項。另一種添加列表項的方法是在程序中使用列表框控件的AddItem方法。6.2.1向列表框添加列表項向列表框添加列表項向列表框控件中添加列表項的一般格式如下: . AddItem . AddItem ,列表項索引號,列表項索引號 其中是用雙引號定界、將要在列表框中顯示的列表項名稱。 列表項索引號是從0開始的順序號,對應于列表框的ListIndex屬性。用于確定新增列表項在列表框中的位置。缺省索引號,則新增列表項添加到列表末尾。例如,在列表框中添加一個圖片名稱: lstPicture.AddItem 向日葵6.2.1向列表框添加列表
33、項向列表框添加列表項在Form_Load事件過程中對列表框初始化,把圖片名稱添加到列表框。可以編寫以下事件過程:Private Sub Form_Load() lstPicture.AddItem 向日葵 lstPicture.AddItem 計算機 lstPicture.AddItem 沙丘 lstPicture.AddItem 草原 lstPicture.AddItem 卡通圖案1 lstPicture.AddItem 卡通圖案2 lstPicture.AddItem 籃球End Sub運行程序,分別用AddItem方法向列表框添加多個列表項。6.2.1向列表框添加列表項向列表框添加列表項
34、考慮:雙擊某一圖片名稱(如向日葵)時,如何能在窗體上顯示出該圖片列表框支持單擊和雙擊等事件。雙擊列表框中“向日葵”時,列表框的Text屬性就獲得一個值“向日葵”,同時ListIndex屬性(表示被選中的列表項在列表中的順序)獲得一個值0 (序號從0開始,“向日葵”位于列表的首行,此時列表框的ListIndex屬性值為0)。利用ListIndex屬性的值,判斷被選中的列表項。6.2.1向列表框添加列表項向列表框添加列表項相應的事件過程(部分)如下。Private Sub lstPicture_DblClick() Select Case lstPicture.ListIndex Case 0 p
35、icPicture.Picture = LoadPicture(c:sunflower.jpg) Case 1 picPicture.Picture = LoadPicture(“c:computer.jpg”) Case 6 picPicture.Picture = LoadPicture(c:basketball.jpg) End SelectEnd Sub6.2.1向列表框添加列表項向列表框添加列表項雙擊列表框中任意一個列表項時,就會觸發(fā)列表框的雙擊事件過程lstPicture_DblClick。在這個過程中,用Select Case結(jié)構(gòu)判斷選擇了哪一個列表項,并確定應執(zhí)行哪一個分支語句
36、。如果選中“向日葵”,ListIndex的值為0,應執(zhí)行“Case 0”分支對應的語句。使用LoadPicture函數(shù)將相應的圖片加載到圖片框控件picPicture 中,如圖所示。6.2.1向列表框添加列表項向列表框添加列表項“清除”事件過程的作用是清除圖片框中顯示的圖片,其單擊事件過程如下:Private Sub cmdClear_Click() picPicture.Picture = LoadPicture()End Sub“清除”圖片框中圖片的方法仍然是使用LoadPicture方法,區(qū)別于加載圖片之處是括號中是一個空字符串,表示圖片框清空。按下“結(jié)束”命令按鈕,程序結(jié)束運行。 Pr
37、ivate Sub cmdExit_Click() End End Sub6.2.2 從列表框中刪除列表項從列表框中刪除列表項從列表框中刪除列表項的RemoveItem方法,一般格式如下: . . RemoveItemRemoveItem 從上例的列表框lstPicture中刪除一個列表項,可以使用如下語句: lstPicture.RemoveItem ,1執(zhí)行這個命令后,就把列表框lstPicture中序號為1的列表項刪除。如果把這個命令寫在命令按鈕的單擊事件過程中,就可以在程序運行中,單擊該命令按鈕,將列表框中的表項刪去。6.2.2 從列表框中刪除列表項從列表框中刪除列表項例:從簡易圖片瀏
38、覽器中刪除一個圖片。在上例的窗體上添加一個名稱為cmdDelete、標題為“刪除”的命令按鈕。窗體外觀如圖所示“刪除”命令按鈕的單擊事件過程如下:Private Sub cmdDelete_Click() lstPicture.RemoveItem lstPicture.ListIndexEnd Sub6.2.2 從列表框中刪除列表項從列表框中刪除列表項按照語法規(guī)定,RemoveItem方法要求指明要刪除列表項的序號,單擊列表項時所選中的列表項序號由ListIndex屬性表示。 需要注意的是:刪除該表項后,其后面各列表項的序號都會自動減1,如“沙丘”原序號為2,將改為1,“草原”的序號由3改為
39、2,。有可能導致程序執(zhí)行的混亂。為解決這個問題,修改上例,將 列表框的Text 屬性(即lstPicture.Text)作為判斷條件6.2.2 從列表框中刪除列表項從列表框中刪除列表項例:從簡易圖片瀏覽器中刪除一個圖片。為了刪除列表項后、其他列表項序號發(fā)生改變之后的操作不發(fā)生混亂,修改上例的事件過程,程序如下: Private Sub lstPicture_DblClick() Select Case lstPicture.Text Case 向日葵 picPicture.Picture = LoadPicture(c:sunflower.jpg) Case 沙丘 picPicture.Pic
40、ture = LoadPicture(c:dune.jpg) . Case 籃球 picPicture.Picture = LoadPicture(c:basketball.jpg) End SelectEnd Sub6.2.2 從列表框中刪除列表項從列表框中刪除列表項注意:Select Case之后的表達式由原來的lstPicture.ListIndex 改為lstPicture.Text,即由列表項序號改為列表項文本。相應的每個Case分支條件也改為具體的列表項文本。下圖是先執(zhí)行“刪除”“沙丘”列表項的操作,再雙擊“籃球”列表項的運行結(jié)果。6.2.3 列表框的常用屬性列表框的常用屬性1 1
41、. . Columns Columns 屬性屬性 Columns 屬性用于指定列表框中可見的列數(shù)。默認值為0,列表框只能顯示一列。當指定Columns 值大于或等于1 時,列表框中能顯示多列內(nèi)容。2. List 2. List 屬性屬性List 屬性是字符串數(shù)組。每個數(shù)組元素都是列表框中的一個列表項。使用List 屬性能夠方便地訪問列表框中的列表項??梢园蚜斜砜蛑械脑刭x給字符串變量(如:Rec1=ListBox1.List(2)),也可以把字符串變量的內(nèi)容賦給列表框中的元素(如:ListBox1.List(5)=Rec2)需要說明的是,需要說明的是,List 數(shù)組的第一個元素的下標是0,即L
42、ist 數(shù)組是從List(0)開始;若列表框List 數(shù)組中有n個元素,則最后一個列表項對應于List(n-1)。6.2.3 列表框的常用屬性列表框的常用屬性3. ListCount 3. ListCount 屬性屬性ListCount屬性表示列表框中有多少個列表項ListCount屬性經(jīng)常與List 屬性一起使用。4. ListIndex 4. ListIndex 屬性屬性ListIndex 屬性的值是被選中的列表項在List數(shù)組中的序號。程序運行時,使用ListIndex 屬性能夠判斷列表框中哪個列表項被選中。例如,在列表框List1中選中第2項,即List1.List數(shù)組的第2項,其Li
43、stIndex=1(ListIndex從0開始)。如果沒有從列表框中選擇列表項,則ListIndex為-1。istIndex屬性值不能在設計時設置,只有程序運行時才起作用。6.2.3 列表框的常用屬性列表框的常用屬性5. MultiSelect 5. MultiSelect 屬性屬性在列表框中可以同時選擇一個或多個列表項。MultiSelect 屬性確定了列表框中是否允許選擇多個列表項。6. Selected6. Selected屬性屬性Selected屬性表示列表框中各個列表項是否被選中。Selected屬性是一個數(shù)組,其數(shù)組元素的個數(shù)與列表框的列表項數(shù)相同。例:使用列表框。窗體上有2個列表
44、框,2個命令按鈕,2個標簽及一個列表框。列表框內(nèi)顯示系統(tǒng)提供的屏幕字體。可以用鼠標在“可選的屏幕字體”列表框中選擇一個或多個字體名稱。然后,單擊“顯示”命令按鈕,在另一個列表框顯示所選中的列表項。窗體界面如圖所示。6.2.3 列表框的常用屬性列表框的常用屬性各控件的屬性設置如表。對象屬性設置窗體(名稱)frmListAttCaption列表框?qū)傩粤斜砜?(名稱)lstFontMultiSelect2列表框2(名稱)lstSelected命令按鈕1(名稱)cmdDisplayCaption顯示命令按鈕2(名稱)cmdExitCaption退出標簽1(名稱)可選的屏幕字體CaptionlblTit
45、le1標簽2(名稱)被選中的字體CaptionlblTitle26.2.3 列表列表框的常用框的常用屬性屬性6.2.3 列表框的常用屬性列表框的常用屬性窗體初始化時,將屏幕字體名稱填寫到列表框lstFont中。程序如下。Private Sub Form_Load() 用屏幕字體名字填充列表框。 For i = 0 To Screen.FontCount - 1 lstFont.AddItem Screen.Fonts(i) Next iEnd Sub利用一個循環(huán),把Screen對象的每種字體Fonts(i)添加到列表框lstFont中,如圖所示。Screen是系統(tǒng)自動產(chǎn)生的屏幕對象。通過該對象
46、的Fonts屬性,能夠得到當前計算機屏幕所能使用的字體。由Screen對象的FontCount屬性,能夠得到字體的數(shù)量6.2.3 列表框的常用屬性列表框的常用屬性cmdDisplay_Click中,依次判斷屏幕字體是否被選中。若被選中,將其添加到lstSelected中;否則,判斷下一個列表項。stFont.ListCount是列表框中所顯示的屏幕字體的數(shù)量。注意列表框的 Selected和 List屬性數(shù)組的下標是從0開始,循環(huán)變量i的值從0到ListCount1。其過程如下:Private Sub cmdDisplay_Click() LstSelected.Clear For i = 0
47、 To lstFont.ListCount 1 For i = 0 To lstFont.ListCount 1 If lstFont.Selected(i) Then If lstFont.Selected(i) Then lstSelected.AddItem lstFont.List(i) lstSelected.AddItem lstFont.List(i) End If End If Next i Next iEnd Sub lstFont.Selected(i)值為真,表示列表框中序號為i 的列表項被選中。這時應將該項的內(nèi)容顯示在列表框lstSelected中。6.2.3 列表框的
48、常用屬性列表框的常用屬性7. Sorted 7. Sorted 屬性屬性列表框中列表項可以按照其加入到列表框中的先后次序排列,此時應將Sorted屬性置為False ,即列表框中顯示的列表項不按字母順序排序;若想使其按字母序排列,應將Sorted屬性設為True。8. Text 8. Text 屬性屬性如果列表框中選擇了多個列表項,列表框的Text屬性值是最后一次選中的正文。也就是說,通過Text屬性只能得到一個被選中的列表項。6.2.3 列表框的常用屬性列表框的常用屬性9. Style 9. Style 屬性屬性列表框的Style 屬性有兩個值:0 和 1 。對應不同的Style值,列表框有
49、不同的外觀形式。如圖所示 。6.3 組合框組合框列表框能從多個列表項中任選一個或多個進行相應的處理。但有時不僅需要從已有的列表項中進行選擇,還希望能輸入列表中不包含的列表項。例如,如果需要輸入列表中未包括的圖片名稱,就需要使用文本框等控件接受輸入的文字。使用組合框(ComboBox)能解決這個問題。組合框相當于將列表框和文本框的功能綜合到一起。6.3.1 組合框的使用組合框的使用例:使用組合框。設計一個程序,要求程序運行后,在組合框中顯示若干城市的名稱。選中某個城市后,將其名稱顯示在對應于“選中的城市”的標簽中。在程序運行中,可以向組合框中添加新的城市,也可以刪除選中的城市。窗體外觀如圖所示
50、。6.3.1 組合框的使用組合框的使用對象屬性設置窗體(名稱)Form1組合框(名稱)cboCityStyle1標簽1(名稱)lblTitle1Caption所有城市標簽2(名稱)lblTitle2Caption選中的城市標簽3(名稱)lblCityCaption置空BorderStyle1命令按鈕1(名稱)cmdAddCaption添加命令按鈕2(名稱)cmdDeleteCaption刪除命令按鈕3(名稱)cmdExitCaption退出在Form_Load中把城市名稱添加到組合框中。過程代碼如下。Private Sub Form_Load() cboCity.AddItem 北京 cboC
51、ity.AddItem 上海 cboCity.AddItem 天津 cboCity.AddItem 重慶 cboCity.AddItem 廣州End Sub6.3.1 組合框的使用組合框的使用當選擇組合框中的某個城市,觸發(fā)組合框的單擊事件,將組合框中所選擇的城市(即cboCity.Text)顯示在標簽中。相應的過程代碼如下。 Private Sub cboCity_Click() lblCity.Caption = cboCity.Text End Sub如果要在組合框中添加新的城市,需要先在組合框中輸入一個新城市名,再單擊“添加”按鈕,處理的基本思路如右圖所示。6.3.1 組合框的使用組合框的使用Private Sub cmdAdd_Click() Flag = 0 If cboCity.Text Then For i = 0 To cboCity.ListCount If
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高考語文二輪復習專題2小說閱讀突破練9復合文本閱讀的考查方式
- 中國人的健康現(xiàn)狀
- 綠茶沖泡技術(shù)課件
- 井下透水安全培訓
- 重癥監(jiān)護室術(shù)后健康宣教指南
- 關(guān)于超額預定的培訓方案
- 【課件】+聲音的產(chǎn)生與傳播(教學課件)2024-2025學年初中物理人教版(2024)八年級上冊+
- 珠寶門店黃金培訓
- 學校領導安全培訓
- 2025年深遠海風電場建設規(guī)劃與海上風能資源評估報告
- 2024年江蘇省響水縣衛(wèi)生局公開招聘試題帶答案
- 2025年河北省高考招生統(tǒng)一考試高考真題地理試卷(真題+答案)
- 2025春國家開放大學《毛概》終考大作業(yè)答案
- 疲勞恢復物理手段-洞察及研究
- 人教版三年級數(shù)學下學期期末復習試卷含答案10套
- 天津市四校聯(lián)考2023-2024學年高一下學期7月期末考試化學試卷(含答案)
- 2025年河北省中考學易金卷地理試卷(原創(chuàng)卷)及參考答案
- 2025年時政100題(附答案)
- 2025年安全生產(chǎn)月查找身邊安全隱患及風險控制專題培訓課件
- CJ/T 328-2010球墨鑄鐵復合樹脂水箅
- BIM技術(shù)在建筑項目施工工藝優(yōu)化中的應用報告
評論
0/150
提交評論