在上一節(jié),我們制作了一個 Style 為 0 的列表程序,現(xiàn)在我們來制作一個 Style 為 1 的列表程序。
雖然僅僅是 Style 的改變,但整個程序發(fā)生了完全的變化。本節(jié)中的程序更為科學(xué),而且只需改動幾行代碼,同樣適合上一節(jié)的程序。
在編制本節(jié)程序前,我們有必要對 For ··· Next ···循環(huán)結(jié)構(gòu)語句做個了解。
一、For 循環(huán)語句:
在實際生活中,我們經(jīng)常會遇到一些操作并不復(fù)雜,但需要重復(fù)多次處理的情況,如人口統(tǒng)計、利率的計算等,為此,Visual Basic 提供了循環(huán)語句來專門解決此類情況。
循環(huán)語句的具體情況,我們將在以后的章節(jié)中闡述,本節(jié)我們只是針對 For 循環(huán)語句做個大致的了解。
1、For ··· Next ···語句的一般格式:
For 變量 = Start To End [Step]
[需要循環(huán)的語句]
[Exit For]
Next 變量
說明:
(1)、For 后的“變量”與 Next 后的“變量”為同一個,“變量”應(yīng)該是數(shù)值類型的。
(2)、Start 代表的是循環(huán)的初始值,End 代表的是循環(huán)的終值。假設(shè)從 1 到 100 進行循環(huán),那么,循環(huán)初值是 1 ,終值是 100 ;假設(shè)從 1 到 50 進行循環(huán),那么初值是 1 ,終值是 50 。
(3)、To 是循環(huán)中的關(guān)鍵字,表示從初值到終值的范圍,不能省略。
(4)、Step 是步長值,代表變量的增量,既可以是正數(shù)(遞增循環(huán)),也可以是負數(shù)(遞減循環(huán)),但不能為 0 ,如果步長值為 1 即默認狀態(tài),可以省略不寫。
(5)、需要循環(huán)的語句,既可以是一個,也可以是多個語句,但必須放在 For 與 Next 之間。
(6)、Exit For:當(dāng)程序執(zhí)行到此處,自動退出本層循環(huán)。
(7)、需要循環(huán)的語句與 Exit For 都可以省略,這時表示的是一個無內(nèi)容的空循環(huán),主要做為程序延遲使用。
2、示例一:
編寫一個程序,用來計算 1 到 100 間所有整數(shù)的和是多少。
(1)、程序界面與控件屬性:
程序界面與控件屬性如圖一,為了讓大家看得更為清楚,我們將標簽控件的 BoderStyle 屬性設(shè)為 1 。
圖一
(2)、程序功能:
用戶點擊“開始”按鈕(CmdStart)開始計算,完成后將結(jié)果用標簽(LblShow)顯示出來。
(3)、書寫代碼:
“開始”按鈕的點擊事件:
Private Sub CmdStart_Click()
x = 0
For y = 1 To 100
x = x + y
Next y
LblShow.Caption = "最后的結(jié)果是:" & x
End Sub
說明:
(1)、1 到 100 中所有整數(shù)的和可以這樣來看:1+2+3+······+100 ,即 100 次相加,那么這重復(fù)的 100 次相加可以通過 For 循環(huán)來完成。
(2)、程序中 y 只是用來決定循環(huán)次數(shù)的變量,通常的,我們會利用其他變量來編寫程序,這里的 X 就是一個求和累加器,它的初值是 0 ,終值則是我們最后需要的數(shù)值。
(3)、X = X +y ,是指變量 X 與 y 相加后將新的值賦給 X 。當(dāng) X 為初始的 0 時,y 進入第一次循環(huán)即 y = 1 ,X + Y = 1 ;系統(tǒng)將 X = 1 記錄下來,然后進入第二次循環(huán)即 y =2 ,X + Y = 3 (1 + 2),然后將 X = 3 記錄下來并進入第三次循環(huán),以此類推。這就將 1+2+3+······+100 的最終值算了出來。
(4)、經(jīng)過第一百次循環(huán),程序執(zhí)行 Next y 后的語句,即將最后結(jié)果用標簽顯示出來。
3、示例二:
計算 1 到 100 間所有奇數(shù)的和。
只需將上例中的“開始”按鈕的循環(huán)程序加上步長值即可。代碼如下:
Private Sub CmdStart_Click()
x = 0
For y = 1 To 100 Step 2
x = x + y
Next y
LblShow.Caption = "最后的結(jié)果是:" & x
End Sub
二、列表程序二:
1、程序界面:
最終的程序界面如圖二:
圖二
跟上一節(jié)的內(nèi)容相比,帶復(fù)選框的選擇是通過勾選復(fù)選項前面的復(fù)選框來確定一個表項是否被選中的,它可以一次選中多個表項并一次移動多個表項。
上一節(jié)的程序,一次只能移動一個表項。
2、前后兩種程序的區(qū)別:
上一節(jié)的程序中,對單個表項進行移動,首先加入了是否選中的判斷,然后再進行移動;全部移動,首先對目標框清零,再進行移動。它們雖然比較好理解,但程序的有效性卻不佳。
本節(jié)的程序,對單個與全部表項進行移動,都采用循環(huán)法,可以一次移動多個表項。
3、程序代碼:
(1)、窗體的載入事件(Form_Load)跟上一節(jié)一樣:
Private Sub Form_Load()
LstLeft.AddItem "劉德華"
LstLeft.AddItem "張學(xué)友"
LstLeft.AddItem "郭富城"
LstLeft.AddItem "黎 明"
LstLeft.AddItem "譚詠麟"
LstLeft.AddItem "梅艷芳"
LstLeft.AddItem "張曼玉"
End Sub
(2)、向右按鈕的點擊事件(CmdRight):
Private Sub CmdRight_Click()
Dim X As Integer
While LstLeft.SelCount > 0
For X = 0 to LstLeft.LstCount - 1
If LstLeft.Selected(X) = True Then
LstRight.AddItem LstLeft.List(X)
LstLeft.RemoveItem X
Exit For
End If
Next X
Wend
End Sub
(3)、全部向右按鈕的點擊事件(CmdAllRight)
Private Sub CmdAllRight_Click()
Dim X As Integer
For X = 0 to LstLeft.ListCount - 1
LstRight.AddItem LstLeft.List(X)
Next X
LstLeft.Clear
End Sub
(4)、以此類推,輸入向左按鈕(CmdLeft)與全部向左按鈕(CmdAllLeft)的點擊事件,最后按 F5 鍵運行程序。
------------------------------- · 相關(guān)文檔瀏覽 · --------------------------------------------------------------------- · 熱門文檔瀏覽 · -------------------------------------