Combobox(組合框)控件相當於將文本框和列表框的功能結合在一起。這個控件可以實現輸入文本來選定項目,也可以實現從列表中選定項目這兩種選擇項目的方法。如果項目數超過了組合框能夠顯示的項目數,控件上將自動出現滾動條。用戶可以上下或左右滾動列表。ComboBox控件在工具箱中的圖標如圖所示:
1.使用組合框和列表框
通常,組合框適用於建議性的選項列表,而當希望將輸入限制在列表之內時,應使用列表框。組合框包含編輯區域,因此可將不在列表中的選項輸入列區域中。此外,組合框節省了窗體的空間。只有單擊組合框的向下箭頭時(Style屬性值為1的組合框除外,它總是處於下拉狀態)才顯示全部列表,所以無法容納列表框的地方可以很容易地容納組合框。
2.組合框的樣式
此處有三種組合框樣式。每種樣式都可在設計時或運行時來設置,而且每種樣式都使用數值或相應的Visual Basic常數來設置組合框的樣式。
樣式值常數:下拉式組合框值為0,Vb.net中的常數值為DropDown;簡單組合框值為1,Vb.net中的常數值為Simple;下拉式列表框值為2,vb.net中的常數值為DropDownList。
3.下拉式組合框
在缺省設置(Style=0)下,組合框為下拉式。用戶可象在文本框中一樣直接輸入文本,也可單擊組合框右側的附帶箭頭打開選項列表。選定某個選項後,將此選項插入到組合框頂端的文本部分中。當控件獲得焦點時,也可按Alt+↓鍵打開列表
4.簡單組合框
將組合框的Style屬性設置為1,將指定一個簡單的組合框,任何時候都在其內顯示列表。為顯示列表中所有項,必須將列表框繪制得足夠大。當選項數超過可顯示的限度時將自動插入一個垂直滾動條。用戶可直接輸入文本,也可從列表中選擇。象下拉式組合框一樣,簡單組合框也允許用戶輸入那些不在列表中的選項。
5.下拉式組合框
下拉式組合框(Style=2)與正規列表框相似--它顯示項目的列表,用戶必須從中選擇,但下拉式列表框與列表框不同之處在於,除非單擊框右側的箭頭,否則不顯示列表。
這種列表框與下拉式組合框的主要差別在於,用戶不能在列表框中輸入選項,而只能在列表中選擇。當窗體上的空間較少時,可使用這種類型的列表框。
6.添加項目
為在組合框中添加項目,應使用Insert方法,其語法如下:
ComboboxName.Items.Insert(index As Integer,item As Object)
"comboboxName"為列表框或組合框名稱,item為在列表中添加的字符串表達式,用引號括起來。Index用來指定新項目在列表中的插入位置。Index為0表示第一個位置。當在第一個位置時,也可以用語法:
combobox.Items.Add(item As Object)
通常在設計時或在New過程中添加列表項目,但也可在任何時候使用Insert方法。這樣就能動態在列表中添加項目。以下代碼將“Chardonnay”,“Fum Blanc”,“Gewztraminer”和“Zinfandel”放置到名為combobox1,Style屬性為0(DropDown)的組合框中:
Public Sub New() ... ... Combobox1.Items.Insert "Chardonnay" Combobox1.Items.Insert "Fum Blanc" Combobox1.Items.Insert "Gewztraminer" Combobox1.Items.Insert "Zinfandel" End Sub
7.設計時添加項目
在設計時,也可設置組合框控件“屬性”窗口的Items屬性,從而在列表中添加項目。選定Items屬性並單擊按鈕後就可以輸入列表項目,然後按回車鍵換到新的一行。
只能將項目添加到列表的末尾。所以,如果要將列表按字母順序排序,則應將Sorted屬性設置為True.
8.指定位置添加項目
為了在列表指定位置添加項目,應在新項目後指定索引值。例如,下行代碼將"Piont Noir"插入到第一個位置並把其他項目的位置向下調整:
Combobox1.Items.Insert(0,"Pinot Noir")
注意:指定列表中的第一個位置的是0而不是1
9.排序列表
將Sorted屬性設置為True並省略索引,則可在列表中指定按字母順序添加的項目。排序時不區分大小寫。將sorted屬性設置為true後,Items.Insert方法將導致不可預料的非排序結果。
10.刪除項目
可在組合框中用Items.Remove方法來刪除項目。Items.Remove有一個參數index,它指定要刪除的項目:combobox1.Items.Remove(index)及index參數和Items.Insert中的參數相同。例如,為了刪除列表中的第一個項目,應添加下面一行代碼:
combobox1.Items.Remove(0)
若要刪除所有列表項目,就使用Clear方法:
combobox1.Clear
11.用Text屬性獲取列表內容
獲取當前選項目值的最簡單的常用方法就是使用Text屬性。在運行時無論向控件的文本框部分輸入了什麼文本,Text屬性都與這個文本相對應。它可以是選定的列表選項,或者是用戶在文本框中輸入的字符串。例如,如果用戶選定列表框中的“chardonnay”,則通過下列代碼顯示有關“chardonnay”的信息:
Private Sub Combobox1_click(Byval sender As Object,Byval e As System.EventArgs) If Combobox1.Text="Chardonnay" Then Textbox1.Text="Chardonnay is a midium-bodied white wine." End If End Sub
其中Text屬性包含Combobox1列表框中當前選定的項目。代碼查看是否選擇了“Chardonnay”,若是如此,則在文本框中顯示信息。
12.用Items屬性訪問列表選項
有了Items屬性就可訪問列表中所有項目,該屬性包含一個數組,而且列表中的每個項目都是數組的元素。每一項都表示為字符串的形式。為了引用列表中的項目,應使用如下語法:
ComboboxName.Items(index)
ComboboxName為組合框名稱,而index是項目的位置。頂端項目的索引為0,下一個項目的索引為1,依次類推。例如,在文本框中,以下語句顯示列表中的第三個項目(index=2):
Text1.Text=CStr(Combobox1.Items(2))
13.用SelectIndex屬性判斷位置
想要知道組合框列表中選定項目位置,可以由SelectIndex屬性得到。該屬性設置或返回控件中當前選定項目的索引值,而且只在運行時有效。對組合框的SelectIndex屬性進行設置時也會觸發控件的Click事件。若選定第一個(項端)項目,則屬性值為0;選定的下一個項目屬性值為1,依次類推。如果未選定項目,或者用戶在組合框中輸入選項(樣式0或1)而不在列表中選擇現有的項目,則SelectIndex為-1。
14.Items.Count屬性返回項目數
為了返回組合框中的項目數,應使用Items.Count屬性。例如,下列語句用Items.Count屬性判斷組合框中的項目數:
TextBox1.Text="You have"&Combobox1."Items.Count"&"_entries listed"