標籤:
可以提供選項列表的控制項有ListBox、ComboBox、CheckedListBox,如何正確的使用和選擇這些控制項,下面對此進行討論。首先對這三種控制項的功能分別進行說明:
ListBox
ListBox用於顯示項目列表,使用者可以從中選擇一項或多項。如果項目總數超出可以顯式的項目數,則ListBox會自動添加捲軸。當MultiColumn屬性為true時,列表框以多列形式顯示條目,並且會出現一個水平捲軸。當MultiColumn為false時,列表框以單列形式顯示條目,並且會出現一個垂直捲軸。當ScrollAlwaysVisible為true時,無論條目多少都會顯示捲軸。SelectionMode屬性用於設定一次可以選擇多少條目。
更改ListBox控制項的方法
SelectedIndex屬性返回列表框中第一個被選條目對應的整數。通過在代碼中更改SelectedIndex值,可以更改選定項;而被選擇的條目在視窗上反白。如果未選擇任何項,則SelectedIndex的值為-1,如果選擇的是第一項,則SelectedIndex值為0。當選擇多項,SelectedIndex值表示第一個被選擇的條目。
SelectedItem屬性類似於SelectedIndex,不過它代表條目本身,通常為字串。
Count屬性工作表示列表中項目數,由於SelectedIndex是從零開始的,所以Count屬性的值通常比SelectedIndex的最大可能值大1.
添加或刪除條目:Add、Insert、Clear或Remove。也可以在開始使用Items屬性向列表中添加項。
重點:判斷選擇的條目,設定捲軸,添加刪除條目。
ComboBox
ComboBox控制項以下拉框的方式顯示資料。ComboBox預設分兩部分顯示:頂部是一個允許使用者鍵入清單項目的文字框;下面是一個列表框,它顯示一個項列表。
SelectedIndex,Count, SelectedItem, Add, Remove, Insert, Clear的功能同ListBox完全一樣。
CheckedListBox
CheckedListBox對ListBox進行了擴充。它幾乎可以完成ListBox可以完成的所有任務,並且還可以在清單項目旁邊顯示核取記號。兩個之間的差異在於,CheckedListBox只支援DrawMode.Normal模式;並且CheckedListBox只能有0或1項沒選中。
CheckedListBox在設計時在String Collection Editor中添加好條目,也可以使用Items屬性動態添加。
確定CheckedListBox的選擇項
當以CheckedListBox顯示資料時,可以通過CheckedItems屬性逐一查看所有資料,並且可通過GetItemChecked方法確定哪些項被選中了。GetItemChecked方法參數以項目索引為參數,返回bool值。而SelectedItems和SelectedIndices屬性不用於確定被選中的項,而用於表示反白的項目。
確定CheckedListBox中被選中項目的方法如下:
- 從0開始逐一查看CheckedItems結合。注意,此方法提供的是已選中項列表而不是整個列表中的項目。因此,如果沒選第一項而選了第二項,則下面的代碼顯示的文本類似於”Checked Item 1 = MyListItem 2”.
/ Determine if there are any items checked.if(checkedListBox1.CheckedItems.Count != 0){ // If so, loop through all checked items and print results. string s = ""; for(int x = 0; x <= checkedListBox1.CheckedItems.Count - 1 ; x++) { s = s + "Checked Item " + (x+1).ToString() + " = " + checkedListBox1.CheckedItems[x].ToString() + "\n"; }MessageBox.Show (s);}
- Items屬性迴圈所有項,對每項調用GetItemChecked方法,也可以確認選中項:
int i;string s; s = "Checked items:\n" ;for (i = 0; i <= (checkedListBox1.Items.Count-1); i++){ if (checkedListBox1.GetItemChecked(i)) { s = s + "Item " + (i+1).ToString() + " = " + checkedListBox1.Items[i].ToString() + "\n"; }}MessageBox.Show (s);
何時使用ComboBox而非ListBox
ComboBox和ListBox具有相似行為,在某些情況下可以互換。使用建議如下:
當你想提供一組建議選項時,使用ComboBox;如果要限制輸入或確定選項列表確定,用ListBox。ComboBox包含一個文字框,因此可以輸入列表中沒有的選項,不過當其DropDownStyle屬性設定為DropDownList時除外,此時當你鍵入的第一個字母與某個條目匹配,會自動選擇該條目。
另外,ComboBox比較節省空間的,這點很好理解。不過在DropDownStyle設定為Simple時,會一直顯示完整列表,此時ComboBox佔用的空間反倒比ListBox多。
對ComboBox,ListBox,CheckedListBox的內容排序
Windows表單控制項綁定到資料時,是不支援排序的,若要排序資料,必須使用支援排序的資料來源,然後對資料來源進行排序。
如果不是資料繫結控制項,可以按以下方法進行排序:
是不是很簡單……
如何將ComboBox和ListBox綁定到資料
將ComboBox和ListBox綁定到資料,可以方便進行資料庫瀏覽,添加新資料,編輯現有資料等工作。
綁定ComboBox和ListBox的過程一樣,如下所示:
- 將DataSource屬性設定為資料來源對象。可能的資料來源包括BindingSource, table,等。
- 如果是綁定到table,則需要將DisplayMember屬性設定為需要顯示的那一列的name。
用於列出選項的Windows表單控制項