列表框

列表框

列表框(ListBox)用於提供一組條目(數據項),用戶可以用滑鼠選擇其中一個或者多個條目,但是不能直接編輯列表框的數據。當列表框不能同時顯示所有項目時候,他將自動添加滾動條,使用戶可以滾動查閱所有選項。列表框(LstName)中是人物的名稱,用戶選擇不同的名字,下面的標籤(LblShow)自動顯示此人的相關信息。列表框的特點是:列表框中的項目是通過程式插入到其中的,用戶無法向清單中輸入數據,當選擇其中的項目,並在用戶單擊一個按鈕或者執行某個操作時,由應用程式完成對指定項目的具體操作。

示例

列表框的特點是:列表框中的項目是通過程式插入到其中的,用戶無法向清單中輸入數據,當選擇其中的項目,並在用戶單擊一個按鈕或者執行某個操作時,由應用程式完成對指定項目的具體操作。下面這個例子充分說明了列表框的這個特點,並介紹了列表框(ListBox)的常用屬性。

為了學習方便,提供的源碼已經作了詳細的中文注釋,看看源碼框中的代碼:

Option Explicit

' 簡單的列表框ListBox的例子

'------名稱-------------作用------------

' List1、List2 列表框

列表框列表框

' LefttoRightCmd 移動所選項目到另一個列表框(左到右)

' RighttoLeftCmd 移動所選項目到另一個列表框(右到左)

' LefttoRightCmd 移動所選項目到另一個列表框(左到右)

' RighttoLeftCmd 移動所選項目到另一個列表框(右到左)

' List1.deleteString 刪除列表框List1中所選項目

' List2.deleteString 刪除列表框List2中所選項目

' List1.AddString 給列表框List1增加新項目

' List2.AddString給列表框List2增加新項目

' List1.ResetContent清空列表框List1

' List2.ResetContent 清空列表框List2

'————名稱————屬性設定———

' List1列表框 Sorted屬性設為“False”

' List2列表框 Sorted屬性設為“True”

' MultiSelect屬性設定為2

' 即List2控制項中的項目總是排序的

'--------------------------------------

Private Sub Form_Load()

'裝載窗體時,給列表中的元素賦值

List1.AddItem “China”

List1.AddItem “America”

List1.AddItem “Japan”

List2.AddItem “Soccer”

List2.AddItem “Tennis”

List2.AddItem “Basketball”

End Sub

Private Sub LefttoRightCmd_Click()

'將左邊列表中所選元素移動到右邊列表中

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(“在列表中輸入新項目”)

'向列表中加入新項目

If Trim(ListItem) <;>; ““ Then

'Trim()作用是清除ListItem字元串內的空格

List1.AddItem ListItem

End If

End Sub

Private Sub List1ClearCmd_Click()

'清空列表

List1.Clear

End Sub

Private Sub List1MoveCmd_Click()

Dim i As Integer

'判斷列表框是否只有一個項目被選中

If List1.SelCount = 1 Then

List1.RemoveItem List1.ListIndex

ElseIf List1.ListCount >; 1 Then

'刪除列表框中的所選中的多個項目

For i = List1.ListCount - 1 To 0 Step -1

'ListCount返回列表框中的項目總數

'ListCount-1是列表框中最後一個項目的索引號

'判斷該項目是否被選中,Selected()返回布爾值

If List1.Selected(i) Then

'刪除索引號為i的項目

List1.RemoveItem i

End If

Next

End If

End Sub

Private Sub List2AddCmd_Click()

'定義變數,以接收輸入的字元串

Dim ListItem As String

ListItem = InputBox(”在列表中輸入新項目“)

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

'判斷所選 元素是否只有一個

If List2.SelCount = 1 Then

List2.RemoveItem List2.ListIndex

'如果所選 元素大於1,則按下列操作進行

ElseIf 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

'判斷選中的元素有幾個

If List2.SelCount = 1 Then

List1.AddItem List2.Text

List2.RemoveItem List2.ListIndex

'當選中的元素大於一個時

ElseIf 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

這個例子包含一個窗體,窗體中有兩個列表框(List1、List2)和八個按鈕,界面如下:

(圖)窗體(FormListBox)

我們首先新建一個標準的EXE工程,添加一個窗體,並把列表框和按鈕控制項添加到窗體上。各按鈕控制項的名稱如下表:

按鈕名稱 名稱屬性 按鈕名稱 名稱屬性

刪除所選項目(左) List1movecmd 刪除所選項目(右) List2movecmd

增加新項目(左) List1addcmd 增加新項目(右) List2addcmd

清除弄表(左) List1clearcmd 清除列表(右) List2clearcmd

右箭頭 lefttorightcmd 左箭頭 Righttoleftcmd

' List1列表框 Sorted屬性設為“False” ' List2列表框 Sorted屬性設為“True” ' MultiSelect屬性設定為2 ' 即List2控制項中的項目總是排序的

在屬性視窗中,將List1列表框 Sorted屬性設為“False”;List2列表框 Sorted屬性設為“True”,MultiSelect屬性設定為2,即List2控制項中的項目總是排序的。

下一步我們為各控制項添加相應的程式。

其中:

List1.AddItem “China” 是將“China”添加到列表框中。

List1.ListIndex 返回的是列表框List1中當前選擇項目的索引號碼。

List1.ListCount 返回的是列表框List1中項目總數。

List1.ListCount - 1 返回列表框List1中最後一個項目的索引號。

List1.Selected() 返回的是一個項目的選擇狀態,返回的是布爾值。

代碼寫好之後,我們就可以保存工程,然後按“Ctrl+F5”鍵,測試檢驗一下我們的程式了。在這個小程式中,包含了列表框中的一般常用屬性和方法。

控制項

Visual Basic 提供了列表框控制項(ListBox)以供用戶進行多個項目的選擇。在工具箱面板上,列表框控制項的圖示如圖一所示:

圖一

默認的列表框控制項名為 ListX(X為阿拉伯數字 1、2、3,等等),規則的命名方式為:LstX(X為用戶自定義的名字,如 LstName、LstUser,等等)。

一、列表框控制項的主要屬性:

列表框中可以有多個項目供選擇,用戶通過單擊某一項選擇自己所需要的項目,如果項目太多,超出了列表框設計時的長度,則自動增加豎向滾動條,如圖二:

圖二

除了一些常見的諸如 Font 、Height、Left、Width、Enabled、Name 等屬性外,列表框還有一些特殊的屬性:

1、List(列表)屬性:

List 是列表框最重要的屬性之一,其作用是羅列或設定表項中的內容。可以在界面設定時直接輸入內容,如圖三:

圖三

在程式運行時,列表框中所有的選項,都可以通過 List(下標值) 的形式表示。比如列表框中的第一項,用 List(0)表示,列表框中的第二項,用 List(1)表示,列表框中的第十項,用 List(9)表示,以此類推。

大家注意,列表框中的第一項,是 List(0) ,而不是 List(1) 。

<1>、List() 屬性的使用是非常靈活的,比如我們要從如圖二的列表框(Lst1)中取出第三項內容,可以用下面的代碼做到:A$ = Lst1.List(2)

其中,A 是一個變數;$ 指明了這個變數的類型:字元串型;這句話的意思是:將 Lst1 列表框中第三項(List(2))取出來然後賦值給字元串變數 A 。

象上面這種賦值辦法,在 VB 中是非常普遍的,又如以前我們學到的:

LblShow.Caption = “Visual Basic”,這句話是指將 Visual Basic 這個字元串賦值給 LblShow 標籤控制項並作為其標題。

緊接上面的內容,假設我們用一個標籤顯示出剛才取出的表項:

LblShow.Caption = A$

那么顯示的結果正是我們取出的選項。

可見,取出某個列表框中的某一表項並將其賦值給某個變數,代碼如下:

字元串變數= 列表框名稱.List(X) ,其中,X 是下標。

<2>、通過 List() 改變原有表項:假設我們要將如圖二的列表框中第三項內容改為“跟我學 VB”,只需輸入下面的代碼即可:

Lst1.List(2) = “跟我學 VB”

上句話的意思是將“跟我學 VB”字元串賦值給 Lst1 並作為其第三項的內容。

結果如圖四:

圖四

可見,要修改某個列表框中某一選項:

列表框名稱.List(X) = “欲修改成的內容” ,其中,X 是下標。

2、ListCount 屬性:

本屬性返回列表框表項數量的數值,只能在程式運行時起作用。比如:一個有著四種選項的列表框,那么 ListCount 就為 4 ;一個列表框有五個選項,那么 ListCount 就為 5 。

返回一個列表框的表項數量值並將其賦值給某個變數,代碼如下:

數值型變數 = 列表框名稱.ListCount

比如要返回圖二列表框的 ListCount:

X% = Lst1.ListCount ,其中,X 是變數,% 表示X是整數類型的變數。

3、ListIndex(索引)屬性:

本屬性用來返回或設定控制項中當前選擇項目的索引號,只能在程式運行時使用。第一個選項的索引號是 0 ,第二個選項的索引號是 1 ,第三個選項的索引號是 2 ,依此類推,ListCount 始終比最大的 ListIndex 值大 1 。當列表框沒有選擇項目時, ListIndex 值為 -1 。

在程式中設定 ListIndex 後,被選中的項目呈反相顯示,如圖五:

圖五

在列表框控制項的所有屬性中,本屬性是非常重要的,因為一個列表,事先你並不知道用戶將要選擇哪一條項目,這時,只有根據 ListIndex 返回的數值,我們才能讓程式針對用戶的選擇做出適當的反應。

返回 ListIndex 的代碼如下:

X% = 列表框名稱.ListIndex

聯想:根據前面的知識我們知道,要取出第三項內容,代碼如下:

A$ = Lst1.List(2)

假設現在選中的是第三項,但我們事先不知道用戶要選擇這一項,那么又應該如何訪問這第三項呢?

代碼如下:A$ = Lst1.List(Lst1.ListIndex) 此時,Lst1.ListIndex 等同於 2 。

仔細想一想,為何要如此書寫?

4、Columns(列)屬性:

本屬性用來確定列表框的列數,當值為 0 時,所有項目呈單列顯示;當值為 1 或者大於 1 ,項目呈多列顯示。Columns 屬性只能在界面設定時指定。如圖六:

圖六

默認狀態時,如果項目的總高度大於列表框的高度,那么列表框右邊會自動增加一個垂直滾動條,用來上下移動列表框。

5、MultiSelect(多重選擇)屬性:

本屬性決定了選項框中的內容是否可以進行多重選擇,只能在界面設定時指定,程式運行時不能予以修改。如圖七:

圖七

MultiSelect 共有三個值:0 ,不允許多項選擇,如果選擇了一項就不能選擇其他項;1 ,允許多重選擇,但功能不如 2 ,可以用滑鼠或空格選擇;2 ,功能最強大的多重選擇,可以結合 Shift 鍵或 Ctrl 鍵完成多個表項的多重選擇。方法是:單擊所要選擇的範圍的第一項,然後按住 Shift 鍵,再單擊選擇範圍最後一項。

6、Style(類型)屬性:

本屬性決定了列表框的外觀,共有兩個值:1 ,Standard ,即為標準型,如圖八:

圖八

2 ,CheckBox ,複選框型,如圖九:

圖九

本屬性只能在界面設定時確定。

7、Selected(選中)屬性:

本屬性返回或設定在列表框控制項中某項目是否選中的狀態。選中時,值為 True ;未被選中,值為 False 。

代碼規則如下: 列表框名稱.Selected(索引值) = True/False

注意,索引號其實是項目的下標值,如果是第三項,那么索引值是 2 ,如果是第十項,那么索引值是 9 ,以此類推。

例一:

有如圖十這樣一個應用程式:

圖十

列表框(LstName)中是人物的名稱,用戶選擇不同的名字,下面的標籤(LblShow)自動顯示此人的相關信息。

原始碼如下:

Private Sub LstName_Click()

If LstName.Selected(0) = True Then

LblShow.Caption = “馬拉多納是阿根廷的球星”

ElseIf LstName.Selected(1) = True Then

LblShow.Caption = “貝肯鮑爾是德國的球星”

ElseIf LstName.Selected(2) = True Then

LblShow.Caption = “羅納爾多是巴西的球星”

Else

LblShow.Caption = “貝克漢姆是英國的球星”

End If

End Sub

本程式是根據用戶選擇的不同,在標籤按件中顯示不同的信息;另外,我們用到了前面學到的 If ···Then··· ElseIf··· End If 語法。

8、SelCount(選中項目數量):

只有當 MultiSelect 屬性值為 1 或 2 時,本屬性才起作用,用來讀取列表框中所選項目的數目,通常與 Selected 一起使用,以處理控制項中的所選項目。

二、列表框控制項的主要事件:

列表框控制項主要接收 Click 與 DblClick ,如例一。

三、列表框控制項的方法:

1、增加項目:AddItem

用 AddItem 可以為列表框增加項目,代碼規則如下:

列表框名稱.AddItem 欲增項目[,索引值]

其中,索引值是可選項,是指欲增項目放到原列表框中的第幾項,如放在第三項,那么索引值是 2 ,放在第五項,索引值則是 4 。

假設我們要在如圖十這樣的程式中增加項目:LstName.AddItem “郝海東”,4

2、清除所有:Clear

用 Clear 可以清除列表框中所有的內容,代碼如下:

列表框名稱.Clear

3、刪除選項:RemoveItem

此方法可以刪除列表框中指定的項目,代碼如下:

列表框名稱.RemoveItem 索引值

其中,索引值是必須的,表示欲刪除哪一個項目。

同樣如圖十的程式,假設我們要刪除第三個項目,代碼如下:

LstName.RemoveItem 2

聯想:對於任意一個列表框,要刪除已經選中的項目,代碼如下:

列表框名稱.RemoveItem 列表框名稱.ListIndex

比如:LstName.RemoveItem LstName.ListIndex

列表框控制項在工具箱上的基礎控制項。很多第三方控制項也對列表框做出了擴充,提供了更多地功能,以滿足不同的需求。只要將dll添加到工具箱就可以使用。

列表框列表框

相關詞條

相關搜尋

熱門詞條

聯絡我們