前面我們了解了ListBox(列表框)控件的使用(參看:vb.net入門——ListBox控件的使用),,在vb.net中還有一個與ListBox控件十分相似的控件——ComboBox 控件,也叫組合框,。組合框控件包括兩個部分,,一部分是上部可以輸入列表項的文本框;另一部分是位于文本框下方的列表框,,用于顯示用戶可以從中選擇的項的列表,,如圖一所示 組合框控件在vb.net工具箱中如下圖二所示: ComboBox 控件和ListBox 控件在功能上很相似,很多情況下,,這兩個控件是可以互換使用的,,但是還是有某種特定的環(huán)境下只適合使用一種控件的情況。 通常,,ComboBox控件適合于建議用戶選擇控件所列舉的選項,、同時又可以讓用戶自行在文本框中輸入列表中不存在的選項的情況;而ListBox 控件適合于限制用戶只能選擇列表中的選項的情況,。 在用戶界面上,,因為ComboBox 控件默認(rèn)情況下是存在下拉列表框的,所以比ListBox 控件占用的窗體空間少,,更加適合于使用在存在大量列表項的情況下,。如下圖三所示的是QQ修改個人設(shè)置的界面,它大量地合理使用ComboBox 控件,,使得用戶界面簡潔且能容納下更多的選項信息,。 由此可見,ComboBox 控件的比ListBox 控件更加能靈活多用,。 一,、ComboBox 控件的常用屬性: 1,、BackColor 屬性:獲取或設(shè)置ComboBox 控件的背景色。 2,、DropDownStyle 屬性:獲取或設(shè)置指定組合框樣式的值,,確定用戶能否在文本部分中輸入新值以及列表部分是否總顯示。它包含三個值,,默認(rèn)值為 DropDown,,如下表所示:
4、DroppedDown 屬性:獲取或設(shè)置一個值,,該值指示組合框是否正在顯示其下拉部分,。如果顯示下拉部分,則為 true,;否則為 false,。默認(rèn)值為 false。 5,、IntegralHeight 屬性:指定是否自動調(diào)整編輯框或列表框控件的高度,,這樣可以正確顯示控件中的最后一項。指定是否自動調(diào)整文本框控件的高度,,以顯示一行文本,。設(shè)計時可用;運行時只讀,。默認(rèn)為False,。如果列表框控件的高度不合適,則控件中的最后一行文字會只顯示一部分,,將 IntergralHeight 設(shè)置為“True” ,,可以自動調(diào)整控件的高度,,這樣可以正確顯示控件中的最后一項。注意:當(dāng) integralheight 屬性設(shè)置為“True” 時,,Height 屬性的值可能與控件的真實高度不符,。 6、Items 屬性:獲取一個對象,,該對象表示該 ComboBox 中所包含項的集合。詳細(xì)用法我們在下文介紹,。 7,、MaxDropDownItems 屬性:下拉部分中可顯示的最大項數(shù)。該屬性的最小值為 1,,最大值為 100,。 8、Text 屬性:ComboBox 控件中文本輸入框中顯示的文本,。 9,、SelectedIndex 屬性和 SelectedItem 屬性:SelectedIndex 屬性返回一個表示與當(dāng)前選定列表項的索引的整數(shù)值,可以編程更改它,,列表中相應(yīng)項將出現(xiàn)在組合框的文本框內(nèi),。如果未選定任何項,則SelectedIndex 為-1,;如果選擇了某個項,,則SelectedIndex 是從0開始的整數(shù)值。SelectedItem 屬性與 SelectedIndex 屬性類似,,但是SelectedItem 屬性返回的是項,。 10、SelectedText 屬性:表示組合框中當(dāng)前選定文本的字符串,。如果 DropDownStyle 設(shè)置為 ComboBoxStyle.DropDownList,,則返回值為空字符串 ("")??梢詫⑽谋痉峙浣o此屬性,,以更改組合框中當(dāng)前選定的文本。如果組合框中當(dāng)前沒有選定的文本,,則此屬性返回一個零長度字符串,。如下代碼,我們可以在ComboBox 控件的鼠標(biāo)事件中驗證該屬性: Private Sub ComboBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBox1.MouseUp MessageBox.Show(ComboBox1.SelectedText) End Sub 返回的值則是我們用鼠標(biāo)選定了的文本,。 與之對應(yīng)的 SelectionLength 屬性返回的則是該文本的字符數(shù),,SelectionStart 屬性返回的則是組合框中選定文本的起始位置。 二,、ComboBox 控件的重要方法: 1,、BeginUpdate 方法和 EndUpdate 方法:當(dāng)使用Add 方法一次添加一個項時,,則可以使用 BeginUpdate 方法,以防止每次向列表添加項時控件都重新繪制 ComboBox,。完成向列表添加項的任務(wù)后,,調(diào)用 EndUpdate 方法來啟用 ComboBox 進行重新繪制。當(dāng)向列表添加大量的項時,,使用這種方法添加項可以防止繪制 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 當(dāng)ComboBox1的當(dāng)前選中項改變時,通過GetItemText方法返回當(dāng)前選中項的文本,?!?/p> 現(xiàn)在可以運行測試。還有其它的一些方法,,可以查看ListBox控件的文章:vb.net入門——ListBox控件的使用
|
|