列表框

列表框

軟件工具
列表框(ListBox)用于提供一組條目(數據項),用戶可以用鼠标選擇其中一個或者多個條目,但是不能直接編輯列表框的數據。當列表框不能同時顯示所有項目時候,他将自動添加滾動條,使用戶可以滾動查閱所有選項。[1]列表框(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添加到工具箱就可以使用。

相關詞條

相關搜索

其它詞條