VB.Net列表框(ListBox)

2019-10-16 23:01:39

列表框(ListBox)代表一個Windows控制元件,向使用者顯示專案列表。使用者可以從列表中選擇一個專案。 它允許程式員在設計時使用屬性視窗或執行時新增專案。

可通過從工具箱中拖動一個ListBox控制元件並將其放在表單上來建立一個列表框。如下所示 -

可以從屬性視窗或執行時填充列表框專案。要將專案新增到ListBox,請選擇ListBox控制元件並轉到屬性視窗,以獲取此控制元件的屬性。 單擊Items 屬性旁邊的省略號(…)按鈕。 這將開啟「字串集合編輯器」對話方塊,在其中輸入一行的值。

ListBox控制元件的屬性

以下是ListBox 控制元件的一些常用屬性:

編號 屬性 範例
1 AllowSelection 獲取一個值,該值指示列表框當前是否允許選擇列表項。
2 BorderStyle 獲取或設定在列表框周圍繪製的邊框的型別。
3 ColumnWidth 獲取設定多列列表框中列的寬度。
4 HorizontalExtent 獲取或設定列表框的水平捲動區域。
5 HorizontalScrollBar 獲取或設定指示是否在列表框中顯示水平捲動條的值。
6 ItemHeight 獲取或設定列表框中專案的高度。
7 Items 獲取列表框的專案。
8 MultiColumn 獲取或設定一個值,該值指示列表框是否支援多列。
9 ScrollAlwaysVisible 獲取或設定一個值,指示是否始終顯示垂直捲動條。
10 SelectedIndex 獲取或設定列表框中當前選定專案的從零開始的索引。
11 SelectedIndices 獲取一個集合,其中包含列表框中所有當前選定專案的從零開始的索引。
12 SelectedItem 獲取或設定列表框中當前選定的專案。
13 SelectedItems 獲取包含列表框中當前選定專案的集合。
14 SelectedValue 獲取或設定由ValueMember屬性指定的成員屬性的值。
15 SelectionMode 獲取或設定在列表框中選擇專案的方法。該屬性具有值:oneOneMultiSimpleMultiExtended
16 Sorted 獲取或設定一個值,該值指示列表框中的專案是否按字母順序排序。
17 Text 獲取或搜尋列表框中當前選定專案的文字。
18 TopIndex 獲取或設定列表框第一個可見項的索引。
編號 方法 範例
1 BeginUpdate 防止控制元件繪製,直到呼叫EndUpdate方法,而專案一次新增到列表框。
2 ClearSelected 取消選擇列表框中的所有專案。
3 EndUpdate 在由BeginUpdate方法關閉後,繼續列表框的繪圖。
4 FindString 查詢ListBox中以指定為引數的字串開頭的第一個專案。
5 FindStringExact 查詢ListBox中與指定字串完全匹配的第一個專案。
6 GetSelected 返回一個值,指示是否選擇指定的專案。
7 SetSelected 選擇或清除ListBox 中指定專案的選擇。
8 OnSelectedIndexChanged 引發SelectedIndexChanged 事件。
9 OnSelectedValueChanged 引發SelectedValueChanged 事件。
編號 事件 範例
1 Click 在選擇列表框時發生。
2 SelectedIndexChanged 在列表框的SelectedIndex屬性發生更改時發生。

請參閱Microsoft文件以獲取ListBox控制元件的屬性,方法和事件的詳細列表。

範例1

在下面的例子中,在設計時新增一個列表框,並在執行時新增專案。

參考以下步驟:

  • 在表單上拖放兩個標籤,一個按鈕和一個ListBox控制元件。
  • 設定第一個標籤的文字屬性,以提供標題「選擇您最喜歡學習的語言」。
  • 設定第二個標籤的Text屬性以提供標題「Destination」。當使用者選擇列表中的專案時,此標籤上的文字將在執行時更改。
  • 單擊列表框和按鈕控制元件以在程式碼編輯器中新增以下程式碼。

參考以下實現程式碼 -

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Set the caption bar text of the form.  
        Me.Text = "ListBox - by tw511.com"
        ListBox1.Items.Add("加拿大")
        ListBox1.Items.Add("俄羅斯")
        ListBox1.Items.Add("印度")
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox("您的選擇是: " + ListBox1.SelectedItem.ToString())
    End Sub
    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        Label2.Text = ListBox1.SelectedItem.ToString()
    End Sub


End Class

執行上面範例程式碼,得到以下結果 -

當選擇其中的一個專案:俄羅斯,然後點選確定,得到以下結果 -

範例2

在這個例子中,我們將填充一個帶有專案的列表框,檢索列表框中專案的總數,對列表框進行排序,刪除一些專案,以及清除整個列表框的選項。

設計表單如下:

參考以下範例程式碼 -

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Set the caption bar text of the form.   '
        Me.Text = "ListBox Demo2 - tw511.com"
        ' creating multi-column and multiselect list box '
        ListBox1.MultiColumn = True
        ListBox1.SelectionMode = SelectionMode.MultiExtended
    End Sub
    'populates the list '
    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles btnFill.Click
        ListBox1.Items.Add("泡到一妞")
        ListBox1.Items.Add("學習精通各種演算法")
        ListBox1.Items.Add("努力學習並得到獎學金")
        ListBox1.Items.Add("周遊全國")
    End Sub
    'sorting the list '
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnSorted.Click
        ListBox1.Sorted = True
    End Sub
    'clears the list '
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnClear.Click
        ListBox1.Items.Clear()
    End Sub
    'removing the selected item '
    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
        ListBox1.Items.Remove(ListBox1.SelectedItem.ToString())
    End Sub
    'counting the numer of items '
    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btnCount.Click
        countLabel.Text = ListBox1.Items.Count
    End Sub
    'displaying the selected item on the third label '
    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) _
            Handles ListBox1.SelectedIndexChanged
        currSelectedLabel.Text = ListBox1.SelectedItem.ToString()
    End Sub
End Class

執行上面範例程式碼,得到以下結果 -

注意:專案程式碼為basecontrol/ListBox2 中的原始碼。