列表框(ListBox)用于提供一組條目(數(shù)據(jù)項(xiàng)),用戶可以用鼠標(biāo)選擇其中一個(gè)或者多個(gè)條目,但是不能直接編輯列表框的數(shù)據(jù)。當(dāng)列表框不能同時(shí)顯示所有項(xiàng)目時(shí)候,他將自動(dòng)添加滾動(dòng)條,使用戶可以滾動(dòng)查閱所有選項(xiàng)。
列表框(LstName)中是人物的名稱,用戶選擇不同的名字,下面的標(biāo)簽(LblShow)自動(dòng)顯示此人的相關(guān)信息。列表框的特點(diǎn)是:列表框中的項(xiàng)目是通過程序插入到其中的,用戶無法向清單中輸入數(shù)據(jù),當(dāng)選擇其中的項(xiàng)目,并在用戶單擊一個(gè)按鈕或者執(zhí)行某個(gè)操作時(shí),由應(yīng)用程序完成對(duì)指定項(xiàng)目的具體操作。
中文名列表框
類型列表
含義列表框選
位置北京
示例列表框的特點(diǎn)是:列表框中的項(xiàng)目是通過程序插入到其中的,用戶無法向清單中輸入數(shù)據(jù),當(dāng)選擇其中的項(xiàng)目,并在用戶單擊一個(gè)按鈕或者執(zhí)行某個(gè)操作時(shí),由應(yīng)用程序完成對(duì)指定項(xiàng)目的具體操作。下面這個(gè)例子充分說明了列表框的這個(gè)特點(diǎn),并介紹了列表框(ListBox)的常用屬性。
為了學(xué)習(xí)方便,提供的源碼已經(jīng)作了詳細(xì)的中文注釋,看看源碼框中的代碼:
Option Explicit
' 簡(jiǎn)單的列表框ListBox的例子
'------名稱-------------作用------------
' List1、List2 列表框
' LefttoRightCmd 移動(dòng)所選項(xiàng)目到另一個(gè)列表框(左到右)
' RighttoLeftCmd 移動(dòng)所選項(xiàng)目到另一個(gè)列表框(右到左)
' LefttoRightCmd 移動(dòng)所選項(xiàng)目到另一個(gè)列表框(左到右)
' RighttoLeftCmd 移動(dòng)所選項(xiàng)目到另一個(gè)列表框(右到左)
' List1.deleteString 刪除列表框List1中所選項(xiàng)目
' List2.deleteString 刪除列表框List2中所選項(xiàng)目
' List1.AddString 給列表框List1增加新項(xiàng)目
' List2.AddString給列表框List2增加新項(xiàng)目
' List1.RetContent清空列表框List1
' List2.RetContent 清空列表框List2
'————名稱————屬性設(shè)置———
' List1列表框 Sorted屬性設(shè)為“Fal”
' List2列表框 Sorted屬性設(shè)為“True”
' MultiSelect屬性設(shè)置為2
' 即List2控件中的項(xiàng)目總是排序的
'--------------------------------------
Private Sub Form_Load()
'裝載窗體時(shí),給列表中的元素賦值
List1.AddItem “China”
List1.AddItem “America”
List1.AddItem “Japan”
List2.AddItem “Soccer”
List2.AddItem “Tennis”
List2.AddItem “Basketball”
End Sub
Private Sub LefttoRightCmd_Click()
'將左邊列表中所選元素移動(dòng)到右邊列表中
If List1.ListIndex >;= 0 Then
'在右邊列表中增加新元素
List2.AddItem List1.Text
'刪除左邊列表中的所選元素
List1.RemoveItem List1.ListIndex
End If
End Sub
Private Sub List1AddCmd_Click()
Dim ListItem As String
'
ListItem = InputBox(“在列表中輸入新項(xiàng)目”)
'向列表中加入新項(xiàng)目
If Trim(ListItem) <;>; ““ Then
'Trim()作用是清除ListItem字符串內(nèi)的空格
List1.AddItem ListItem
End If
End Sub
Private Sub List1ClearCmd_Click()
'清空列表
List1.Clear
End Sub
Private Sub List1MoveCmd_Click()
Dim i As Integer
'判斷列表框是否只有一個(gè)項(xiàng)目被選中
If List1.SelCount = 1 Then
List1.RemoveItem List1.ListIndex
ElIf List1.ListCount >; 1 Then
'刪除列表框中的所選中的多個(gè)項(xiàng)目
For i = List1.ListCount - 1 To 0 Step -1
'ListCount返回列表框中的項(xiàng)目總數(shù)
'ListCount-1是列表框中最后一個(gè)項(xiàng)目的索引號(hào)
'判斷該項(xiàng)目是否被選中,Selected()返回布爾值
If List1.Selected(i) Then
'刪除索引號(hào)為i的項(xiàng)目
List1.RemoveItem i
End If
Next
End If
End Sub
Private Sub List2AddCmd_Click()
'定義變量,以接收輸入的字符串
Dim ListItem As String
ListItem = InputBox(”在列表中輸入新項(xiàng)目“)
If Trim(ListItem) <;>; ““ Then
'將字符串增加到列表中
List2.AddItem ListItem
End If
End Sub
Private Sub List2ClearCmd_Click()
'清空列表
List2.Clear
End Sub
Private Sub List2MoveCmd_Click()
Dim i As Integer
'判斷所選 元素是否只有一個(gè)
If List2.SelCount = 1 Then
List2.RemoveItem List2.ListIndex
'如果所選 元素大于1,則按下列操作進(jìn)行
ElIf List2.ListCount >; 1 Then
For i = List2.ListCount - 1 To 0 Step -1
If List2.Selected(i) Then
List2.RemoveItem i
End If
Next i
End If
End Sub
Private Sub RighttoLeftCmd_Click()
Dim i As Integer
'判斷選中的元素有幾個(gè)
If List2.SelCount = 1 Then
List1.AddItem List2.Text
List2.RemoveItem List2.ListIndex
'當(dāng)選中的元素大于一個(gè)時(shí)
ElIf List2.SelCount >; 1 Then
For i = List2.ListCount - 1 To 0 Step -1
'如果該元素被選中,則將其從右邊移至左邊
If List2.Selected(i) Then
List1.AddItem List2.List(i)
List2.RemoveItem i
End If
Next i
End If
End Sub
這個(gè)例子包含一個(gè)窗體,窗體中有兩個(gè)列表框(List1、List2)和八個(gè)按鈕,界面如下:
(圖)窗體(FormListBox)
我們首先新建一個(gè)標(biāo)準(zhǔn)的EXE工程,添加一個(gè)窗體,并把列表框和按鈕控件添加到窗體上。各按鈕控件的名稱如下表:
按鈕名稱 名稱屬性 按鈕名稱 名稱屬性
刪除所選項(xiàng)目(左) List1movecmd 刪除所選項(xiàng)目(右) List2movecmd
增加新項(xiàng)目(左) List1addcmd 增加新項(xiàng)目(右) List2addcmd
清除弄表(左) List1clearcmd 清除列表(右) List2clearcmd
右箭頭 lefttorightcmd 左箭頭 Righttoleftcmd
' List1列表框 Sorted屬性設(shè)為“Fal” ' List2列表框 Sorted屬性設(shè)為“True” ' MultiSelect屬性設(shè)置為2 ' 即List2控件中的項(xiàng)目總是排序的
在屬性窗口中,將List1列表框 Sorted屬性設(shè)為“Fal”;List2列表框 Sorted屬性設(shè)為“True”,MultiSelect屬性設(shè)置為2,即List2控件中的項(xiàng)目總是排序的。
下一步我們?yōu)楦骺丶砑酉鄳?yīng)的程序。
其中:
List1.AddItem “China” 是將“China”添加到列表框中。
List1.ListIndex 返回的是列表框List1中當(dāng)前選擇項(xiàng)目的索引號(hào)碼。
List1.ListCount 返回的是列表框List1中項(xiàng)目總數(shù)。
List1.ListCount - 1 返回列表框List1中最后一個(gè)項(xiàng)目的索引號(hào)。
List1.Selected() 返回的是一個(gè)項(xiàng)目的選擇狀態(tài),返回的是布爾值。
代碼寫好之后,我們就可以保存工程,然后按“Ctrl+F5”鍵,測(cè)試檢驗(yàn)一下我們的程序了。在這個(gè)小程序中,包含了列表框中的一般常用屬性和方法。
控件Visual Basic 提供了列表框控件(ListBox)以供用戶進(jìn)行多個(gè)項(xiàng)目的選擇。在工具箱面板上,列表框控件的圖標(biāo)如圖一所示:
圖一
默認(rèn)的列表框控件名為 ListX(X為阿拉伯?dāng)?shù)字 1、2、3,等等),規(guī)則的命名方式為:LstX(X為用戶自定義的名字,如 LstName、LstUr,等等)。
一、列表框控件的主要屬性:
列表框中可以有多個(gè)項(xiàng)目供選擇,用戶通過單擊某一項(xiàng)選擇自己所需要的項(xiàng)目,如果項(xiàng)目太多,超出了列表框設(shè)計(jì)時(shí)的長(zhǎng)度,則自動(dòng)增加豎向滾動(dòng)條,如圖二:
圖二
除了一些常見的諸如 Font 、Height、Left、Width、Enabled、Name 等屬性外,列表框還有一些特殊的屬性:
1、List(列表)屬性:
List 是列表框最重要的屬性之一,其作用是羅列或設(shè)置表項(xiàng)中的內(nèi)容。可以在界面設(shè)置時(shí)直接輸入內(nèi)容,如圖三:
圖三
在程序運(yùn)行時(shí),列表框中所有的選項(xiàng),都可以通過 List(下標(biāo)值) 的形式表示。比如列表框中的第一項(xiàng),用 List(0)表示,列表框中的第二項(xiàng),用 List(1)表示,列表框中的第十項(xiàng),用 List(9)表示,以此類推。
大家注意,列表框中的第一項(xiàng),是 List(0) ,而不是 List(1) 。
<1>、List() 屬性的使用是非常靈活的,比如我們要從如圖二的列表框(Lst1)中取出第三項(xiàng)內(nèi)容,可以用下面的代碼做到:A$ = Lst1.List(2)
其中,A 是一個(gè)變量;$ 指明了這個(gè)變量的類型:字符串型;這句話的意思是:將 Lst1 列表框中第三項(xiàng)(List(2))取出來然后賦值給字符串變量 A 。
象上面這種賦值辦法,在 VB 中是非常普遍的,又如以前我們學(xué)到的:
LblShow.Caption = “Visual Basic”,這句話是指將 Visual Basic 這個(gè)字符串賦值給 LblShow 標(biāo)簽控件并作為其標(biāo)題。
緊接上面的內(nèi)容,假設(shè)我們用一個(gè)標(biāo)簽顯示出剛才取出的表項(xiàng):
LblShow.Caption = A$
那么顯示的結(jié)果正是我們?nèi)〕龅倪x項(xiàng)。
可見,取出某個(gè)列表框中的某一表項(xiàng)并將其賦值給某個(gè)變量,代碼如下:
字符串變量= 列表框名稱.List(X) ,其中,X 是下標(biāo)。
<2>、通過 List() 改變?cè)斜眄?xiàng):假設(shè)我們要將如圖二的列表框中第三項(xiàng)內(nèi)容改為“跟我學(xué) VB”,只需輸入下面的代碼即可:
Lst1.List(2) = “跟我學(xué) VB”
上句話的意思是將“跟我學(xué) VB”字符串賦值給 Lst1 并作為其第三項(xiàng)的內(nèi)容。
結(jié)果如圖四:
圖四
可見,要修改某個(gè)列表框中某一選項(xiàng):
列表框名稱.List(X) = “欲修改成的內(nèi)容” ,其中,X 是下標(biāo)。
2、ListCount 屬性:
本屬性返回列表框表項(xiàng)數(shù)量的數(shù)值,只能在程序運(yùn)行時(shí)起作用。比如:一個(gè)有著四種選項(xiàng)的列表框,那么 ListCount 就為 4 ;一個(gè)列表框有五個(gè)選項(xiàng),那么 ListCount 就為 5 。
返回一個(gè)列表框的表項(xiàng)數(shù)量值并將其賦值給某個(gè)變量,代碼如下:
數(shù)值型變量 = 列表框名稱.ListCount
比如要返回圖二列表框的 ListCount:
X% = Lst1.ListCount ,其中,X 是變量,% 表示X是整數(shù)類型的變量。
3、ListIndex(索引)屬性:
本屬性用來返回或設(shè)置控件中當(dāng)前選擇項(xiàng)目的索引號(hào),只能在程序運(yùn)行時(shí)使用。第一個(gè)選項(xiàng)的索引號(hào)是 0 ,第二個(gè)選項(xiàng)的索引號(hào)是 1 ,第三個(gè)選項(xiàng)的索引號(hào)是 2 ,依此類推,ListCount 始終比最大的 ListIndex 值大 1 。當(dāng)列表框沒有選擇項(xiàng)目時(shí), ListIndex 值為 -1 。
在程序中設(shè)置 ListIndex 后,被選中的項(xiàng)目呈反相顯示,如圖五:
圖五
在列表框控件的所有屬性中,本屬性是非常重要的,因?yàn)橐粋€(gè)列表,事先你并不知道用戶將要選擇哪一條項(xiàng)目,這時(shí),只有根據(jù) ListIndex 返回的數(shù)值,我們才能讓程序針對(duì)用戶的選擇做出適當(dāng)?shù)姆磻?yīng)。
返回 ListIndex 的代碼如下:
X% = 列表框名稱.ListIndex
聯(lián)想:根據(jù)前面的知識(shí)我們知道,要取出第三項(xiàng)內(nèi)容,代碼如下:
A$ = Lst1.List(2)
假設(shè)現(xiàn)在選中的是第三項(xiàng),但我們事先不知道用戶要選擇這一項(xiàng),那么又應(yīng)該如何訪問這第三項(xiàng)呢?
代碼如下:A$ = Lst1.List(Lst1.ListIndex) 此時(shí),Lst1.ListIndex 等同于 2 。
仔細(xì)想一想,為何要如此書寫?
4、Columns(列)屬性:
本屬性用來確定列表框的列數(shù),當(dāng)值為 0 時(shí),所有項(xiàng)目呈單列顯示;當(dāng)值為 1 或者大于 1 ,項(xiàng)目呈多列顯示。Columns 屬性只能在界面設(shè)置時(shí)指定。如圖六:
圖六
默認(rèn)狀態(tài)時(shí),如果項(xiàng)目的總高度大于列表框的高度,那么列表框右邊會(huì)自動(dòng)增加一個(gè)垂直滾動(dòng)條,用來上下移動(dòng)列表框。
5、MultiSelect(多重選擇)屬性:
本屬性決定了選項(xiàng)框中的內(nèi)容是否可以進(jìn)行多重選擇,只能在界面設(shè)置時(shí)指定,程序運(yùn)行時(shí)不能予以修改。如圖七:
圖七
MultiSelect 共有三個(gè)值:0 ,不允許多項(xiàng)選擇,如果選擇了一項(xiàng)就不能選擇其他項(xiàng);1 ,允許多重選擇,但功能不如 2 ,可以用鼠標(biāo)或空格選擇;2 ,功能最強(qiáng)大的多重選擇,可以結(jié)合 Shift 鍵或 Ctrl 鍵完成多個(gè)表項(xiàng)的多重選擇。方法是:?jiǎn)螕羲x擇的范圍的第一項(xiàng),然后按住 Shift 鍵,再單擊選擇范圍最后一項(xiàng)。
6、Style(類型)屬性:
本屬性決定了列表框的外觀,共有兩個(gè)值:1 ,Standard ,即為標(biāo)準(zhǔn)型,如圖八:
圖八
2 ,CheckBox ,復(fù)選框型,如圖九:
圖九
本屬性只能在界面設(shè)置時(shí)確定。
7、Selected(選中)屬性:
本屬性返回或設(shè)置在列表框控件中某項(xiàng)目是否選中的狀態(tài)。選中時(shí),值為 True ;未被選中,值為 Fal 。
代碼規(guī)則如下: 列表框名稱.Selected(索引值) = True/Fal
注意,索引號(hào)其實(shí)是項(xiàng)目的下標(biāo)值,如果是第三項(xiàng),那么索引值是 2 ,如果是第十項(xiàng),那么索引值是 9 ,以此類推。
例一:
有如圖十這樣一個(gè)應(yīng)用程序:
圖十
列表框(LstName)中是人物的名稱,用戶選擇不同的名字,下面的標(biāo)簽(LblShow)自動(dòng)顯示此人的相關(guān)信息。
源代碼如下:
Private Sub LstName_Click()
If LstName.Selected(0) = True Then
LblShow.Caption = “馬拉多納是阿根廷的球星”
ElIf LstName.Selected(1) = True Then
LblShow.Caption = “貝肯鮑爾是德國的球星”
ElIf LstName.Selected(2) = True Then
LblShow.Caption = “羅納爾多是巴西的球星”
El
LblShow.Caption = “貝克漢姆是英國的球星”
End If
End Sub
本程序是根據(jù)用戶選擇的不同,在標(biāo)簽按件中顯示不同的信息;另外,我們用到了前面學(xué)到的 If ···Then··· ElIf··· End If 語法。
8、SelCount(選中項(xiàng)目數(shù)量):
只有當(dāng) MultiSelect 屬性值為 1 或 2 時(shí),本屬性才起作用,用來讀取列表框中所選項(xiàng)目的數(shù)目,通常與 Selected 一起使用,以處理控件中的所選項(xiàng)目。
二、列表框控件的主要事件:
列表框控件主要接收 Click 與 DblClick ,如例一。
三、列表框控件的方法:
1、增加項(xiàng)目:AddItem
用 AddItem 可以為列表框增加項(xiàng)目,代碼規(guī)則如下:
列表框名稱.AddItem 欲增項(xiàng)目[,索引值]
其中,索引值是可選項(xiàng),是指欲增項(xiàng)目放到原列表框中的第幾項(xiàng),如放在第三項(xiàng),那么索引值是 2 ,放在第五項(xiàng),索引值則是 4 。
假設(shè)我們要在如圖十這樣的程序中增加項(xiàng)目:LstName.AddItem “郝海東”,4
2、清除所有:Clear
用 Clear 可以清除列表框中所有的內(nèi)容,代碼如下:
列表框名稱.Clear
3、刪除選項(xiàng):RemoveItem
此方法可以刪除列表框中指定的項(xiàng)目,代碼如下:
列表框名稱.RemoveItem 索引值
其中,索引值是必須的,表示欲刪除哪一個(gè)項(xiàng)目。
同樣如圖十的程序,假設(shè)我們要?jiǎng)h除第三個(gè)項(xiàng)目,代碼如下:
LstName.RemoveItem 2
聯(lián)想:對(duì)于任意一個(gè)列表框,要?jiǎng)h除已經(jīng)選中的項(xiàng)目,代碼如下:
列表框名稱.RemoveItem 列表框名稱.ListIndex
比如:LstName.RemoveItem LstName.ListIndex
列表框控件在工具箱上的基礎(chǔ)控件。很多第三方控件也對(duì)列表框做出了擴(kuò)充,提供了更多地功能,以滿足不同的需求。只要將dll添加到工具箱就可以使用。
參考資料本文發(fā)布于:2023-06-04 12:20:34,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/92/197060.html
版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:列表框(軟件工具).doc
本文 PDF 下載地址:列表框(軟件工具).pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |