天天看點

ComboBox 控件的用法教程

ComboBox 控件和ListBox 控件在功能上很相似,很多情況下,這兩個控件是可以互換使用的,但是還是有某種特定的環境下隻适合使用一種控件的情況。下面通過本文給大家介紹下ComboBox 控件的用法教程,一起看看吧

前面我們了解了ListBox(清單框)控件的使用,在vb.net中還有一個與ListBox控件十分相似的控件——ComboBox 控件,也叫組合框。組合框控件包括兩個部分,一部分是上部可以輸入清單項的文本框;另一部分是位于文本框下方的清單框,用于顯示使用者可以從中選擇的項的清單

  ComboBox 控件和ListBox 控件在功能上很相似,很多情況下,這兩個控件是可以互換使用的,但是還是有某種特定的環境下隻适合使用一種控件的情況。

  通常,ComboBox控件适合于建議使用者選擇控件所列舉的選項、同時又可以讓使用者自行在文本框中輸入清單中不存在的選項的情況;而ListBox 控件适合于限制使用者隻能選擇清單中的選項的情況。

  在使用者界面上,因為ComboBox 控件預設情況下是存在下拉清單框的,是以比ListBox 控件占用的窗體空間少,更加适合于使用在存在大量清單項的情況下。如下圖三所示的是QQ修改個人設定的界面,它大量地合理使用ComboBox 控件,使得使用者界面簡潔且能容納下更多的選項資訊。

  由此可見,ComboBox 控件的比ListBox 控件更加能靈活多用。

  一、ComboBox 控件的常用屬性:

  1、BackColor 屬性:擷取或設定ComboBox 控件的背景色。

  2、DropDownStyle 屬性:擷取或設定指定組合框樣式的值,确定使用者能否在文本部分中輸入新值以及清單部分是否總顯示。它包含三個值,預設值為 DropDown,如下表所示:

成員名稱 說明

DropDown 文本部分可編輯。使用者必須單擊箭頭按鈕來顯示清單部分。

DropDownList 使用者不能直接編輯文本部分。使用者必須單擊箭頭按鈕來顯示清單部分。

Simple 文本部分可編輯。清單部分總可見。

  3、DropDownWidth 屬性:用于擷取或設定組合框下拉部分的寬度(以像素為機關),有些清單項太長,則需要通過改變該屬性來顯示該類表項的全部文字,如果未設定 DropDownWidth 的值,該屬性傳回組合框的 Width。需要注意的是,下拉部分的寬度不能小于 ComboBox 的寬度,是以我們設定 DropDownWidth 的值如果小于ComboBox 的寬度時下拉清單框的寬度還是與文本框的寬度一樣。

       4、DroppedDown 屬性:擷取或設定一個值,該值訓示組合框是否正在顯示其下拉部分。如果顯示下拉部分,則為 true;否則為 false。預設值為 false。

  5、IntegralHeight 屬性:指定是否自動調整編輯框或清單框控件的高度,這樣可以正确顯示控件中的最後一項。指定是否自動調整文本框控件的高度,以顯示一行文本。設計時可用;運作時隻讀。預設為False。如果清單框控件的高度不合适,則控件中的最後一行文字會隻顯示一部分,将 IntergralHeight 設定為“True” ,可以自動調整控件的高度,這樣可以正确顯示控件中的最後一項。注意:當 integralheight 屬性設定為“True” 時,Height 屬性的值可能與控件的真實高度不符。

  6、Items 屬性:擷取一個對象,該對象表示該 ComboBox 中所包含項的集合。詳細用法我們在下文介紹。

  7、MaxDropDownItems 屬性:下拉部分中可顯示的最大項數。該屬性的最小值為 1,最大值為 100。

  8、Text 屬性:ComboBox 控件中文本輸入框中顯示的文本。

  9、SelectedIndex 屬性和 SelectedItem 屬性:SelectedIndex 屬性傳回一個表示與目前標明清單項的索引的整數值,可以程式設計更改它,清單中相應項将出現在組合框的文本框内。如果未標明任何項,則SelectedIndex 為-1;如果選擇了某個項,則SelectedIndex 是從0開始的整數值。SelectedItem 屬性與 SelectedIndex 屬性類似,但是SelectedItem 屬性傳回的是項。

  10、SelectedText 屬性:表示組合框中目前標明文本的字元串。如果 DropDownStyle 設定為 ComboBoxStyle.DropDownList,則傳回值為空字元串 ("")。可以将文本配置設定給此屬性,以更改組合框中目前標明的文本。如果組合框中目前沒有標明的文本,則此屬性傳回一個零長度字元串。如下代碼,我們可以在ComboBox 控件的滑鼠事件中驗證該屬性:

Private Sub ComboBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBox1.MouseUp  MessageBox.Show(ComboBox1.SelectedText)  End Sub 

  傳回的值則是我們用滑鼠標明了的文本。

  與之對應的 SelectionLength 屬性傳回的則是該文本的字元數,SelectionStart 屬性傳回的則是組合框中標明文本的起始位置。

  二、ComboBox 控件的重要方法:

  1、BeginUpdate 方法和 EndUpdate 方法:當使用Add 方法一次添加一個項時,則可以使用 BeginUpdate 方法,以防止每次向清單添加項時控件都重新繪制 ComboBox。完成向清單添加項的任務後,調用 EndUpdate 方法來啟用 ComboBox 進行重新繪制。當向清單添加大量的項時,使用這種方法添加項可以防止繪制 ComboBox 時閃爍。如下代碼所示:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  Dim i As Integer = 0  ComboBox1.BeginUpdate()  For i = 0 To 999  ComboBox1.Items.Add("Item " &ComboBox1.Items.Count.ToString)  Next  ComboBox1.EndUpdate()  End Sub 

  2、Add 方法:items屬性的方法之一,一般這樣來使用:

ComboBox1.Items.Add("Item 0" ) 

  還可以使用items屬性的Clear方法來清除所有的清單項。

  3、FindString 方法和FindStringExact 方法:

  FindString 方法用于查找 ComboBox 中以指定字元串開始的第一個項,該方法是模糊查詢,但是查找的字元串一定在比對項的開始位置。

  FindStringExact 方法用于查找與指定字元串完全比對的項。

  4、GetItemText 方法:傳回指定項的文本表示形式。使用形式如下:

  GetItemText(item)

  三、示例:

  我們這裡以代碼來了解ComboBox 控件的使用,在窗體中加入一個Combobox控件,四個Button控件,一個TextBox控件,一個GroupBox控件,布局如下圖四所示:

1、在“添加1000項”的按鈕Click事件中添加如下代碼:

Dim i As Integer = 0  ComboBox1.BeginUpdate()  For i = 0 To 999  ComboBox1.Items.Add("Item " &(ComboBox1.Items.Count + 1).ToString)  Next  ComboBox1.EndUpdate() 

  2、在“添加一個項”按鈕Click事件中添加如下代碼:

ComboBox1.Items.Add(TextBox1.Text) 

  即以文本框中輸入的文本作為項的文字。

  3、在“查找模糊比對項”按鈕的Click事件中添加如下代碼:

ComboBox1.SelectedIndex = ComboBox1.FindString(TextBox1.Text) 

  即傳回以文本框中輸入的文本開頭的第一項作為ComboBox控件的選中項。

  4、在“查找完全比對項”按鈕的Click事件中添加如下代碼:  

ComboBox1.SelectedIndex = ComboBox1.FindStringExact(TextBox1.Text) 

  即傳回與文本框中輸入的文本完全比對的項作為ComboBox控件的選中項。

  5、在ComboBox1的SelectedIndexChanged事件中添加如下代碼:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged  MessageBox.Show(ComboBox1.GetItemText(ComboBox1.SelectedItem))  End Sub 

  當ComboBox1的目前選中項改變時,通過GetItemText方法傳回目前選中項的文本。