ListBox(列表框)控件可以顯示一組項目的列表,用戶可以根據需要從中選擇一個或多個選項。列表框可以為用戶提供所有選項的列表。雖然也可設置列表框為多列列表的形式,但在缺省時列表框單列垂直顯示所有的選項,如果項目數目超過了列表框可顯示的數目,控件上將自動出現滾動條。這時用戶可在列表中上、下、左、右滾動。ListBox控件在工具箱中的圖標如圖所示:
1.click和Double-click事件
對於列表框的事件,特別是當列表框參與觸發應用程序的某一部分功能時,可以添加一個Button控件,並把該按鈕同列表框並用。按鈕的Click事件過程應該使用列表框的選項執行適於應用程序的操作。
雙擊列表中的項目與選定項目然後單擊按鈕,這兩者應該具有相同的效果。為此,應在ListBox控件的Double-Click過程中調用按鈕的click過程:
Public Sub ListBox1_DoubleClick(ByVal sender As Object,_ ByVal e As System.EventArgs)Handles ListBox1.DoubleClick Button1_Click(sender,e) End Sub
這將為使用鼠標的用戶提供快捷方式,同時也沒有妨礙使用鍵盤的用戶執行同樣的操作。
注意:沒有與DoubleClick事件等價的鍵盤命令,因此無法通過快捷鍵的方式達到ListBox控件的DoubleClick功能。
2.向列表框中添加項目
為了向列表框中添加項目,應使用InsertItem方法,其語法如下:
ListboxName.InsertItem(index As integer,Item AS Object)
或
ListboxName.Items.Insert(index As Integer,Item As Object)
其中ListboxName列表框的名稱“item”添加到列表中的字符串表達式。若“item”是文字常數,則用括號將它括起來:“index”指定在列表中插入新項目的位置。“index”為0表示第一個位置。如果在列表框的第一個位置添加項目也可以用:
ListboxName.Items.Add(Item As Object)
通常在窗體設計時或New過程或InitializeComponent(該過程存在於Windows Form Designer generated code)中添加列表項目,但也可在任何時候使用InsertItem方法添加項目,於是可動態(響應用戶的操作)添加項目。下列代碼將“Germany”、“India”、“France”和“USA”添加到名為ListBox1的列表框中:
Public Sub New() MyBase.New Form1=Me 'This call is required by the Win Form Designer IntializeComponent ListBox1.InsertItem(0,"Germany") ListBox1.InsertItem(1,"India") ListBox1.InsertItem(2,"France") ListBox1.InsertItem(3,"USA") 'TODO:Add any initialization after the InitializeComponent() call End Sub
注意:“InitializeComponent”中的代碼是在每次窗體設計後自動生成的,因此盡量一次設計好窗體,因為如果重復設計窗體,以前所添加的代碼將被覆蓋掉,所以可以把向ListBox中添加代碼編成一個過程,"'AddItem() '過程",在"New()"或"InitializeComponent()"調用這個過程,如下:
Public Sub New() MyBase.New Form1=Me 'This call is required by the Win Form Designer Intializecomponent Call AddItem(0 'TODO:Add any initialization after the InitializeComponent() Call End Sub Private Sub AddItem() ListBox1.InsertItem(0,"Germany") ListBox1.InsertItem(1,"India") ListBox1.InsertItem(2,"France") ListBox1.InsertItem(3,"USA") End Sub
3.設計時添加項目
通過設置ListBox控件屬性窗口的Items屬性還可在設計時向列表添加項目,在選定了Items屬性選項並單擊時,彈出“字符串集合編輯器”可輸入列表項目並按Enter鍵換行。只能在列表末端添加項目。所以,如果要將列表按字母順序排序,則應將Sorted屬性設置成true.
4.排序列表
可以指定要按字母順序添加到列表中的項目,為此將Sorted屬性設置為true並省略索引。排序時不區分大小寫;因此單詞“japan”和“JAPAN”將被同等對待。Sorted屬性設置為true後,InsertItem方法可能會導致不可預料的非排序結果。
5.從列表中刪除項目
從列表中刪除項目可用下面的語法:
ListboxName.Items.Remove(Index As Integer)
“Remove”有一參數“index”,它指定刪除的項目;它有一個重載函數:
ListboxName.Items.Remove(value As Object)
以適應不同參數輸入的需要。要刪除列表框中的所有項目,應使用Clear方法:
Listbox1.Items.Clear()。
6.通過Text屬性獲取列表內容
通常,獲取當前選定項目值的最簡單方法是使用Text屬性。Text屬性總是對應用戶在運行時選定的列表項目。例如,下列代碼在用戶從列表框中選定Canada時顯示有關加拿大人口的信息:
Public Sub Listbox1_DoubleClick(ByVal sender As object,Byval e As System.EventArgs) If Listbox1.Text="Canada" Then Textbox1.Text="Canada has 24 million people." End If End Sub
Text屬性包含當前在Listbox1列表框中選定的項目。代碼檢查是否選定了“Canada”,若已選定,則在Text框中顯示信息。
7.用Items屬性訪問列表項目
可用Items屬性訪問列表的全部項目。此屬性包含一個數組,列表的每個項目都是數組的元素。每個項目以字符串形式表示。引用列表的項目時應使用如下語法:
ListboxName.Items(index)
"ListboxName"參數是列表框的名稱,“index”是項目的位置。頂端項目的索引為0,接下來的項目索引為1,依次類推。例如,下列語句在一個文本框中顯示列表的第三個項目(index=2):
Textbox1.Text=Ctr(Listbox1.Items(2))。
8.用SelectedIndex屬性判斷位置
如果要了解列表中已選定項目的位置,則用SelectedIndex屬性。此屬性只在運行時可用,它設置或返回控件中當前選定項目的索引。設置列表框的SelectedIndex屬性也將觸發控件的click事件。
如果選定第一個(項端)項目,則屬性的值為0,如果選定下一個項目,則屬性的值為1,依此類推。若未選定項目,則SelectedIndex值為-1。
9.使用Count屬性返回項目數
為了返回列表框中的項目的數目,應使用Count屬性。例如,下列語句用Count屬性判斷列表框中的項目數:
Textbox1.Text="You have"&Listbox1.Items.Count&"_entries listed"