不多說了,如圖,應客戶要求,下拉框中需要自動匹配字符,可能有些人一早就對此很熟,但相對於我還是首次使用,還是花了一點時間,現記錄下來,也希望能幫助大家更好的理解.
首先要設定Combobox的DropDownStyle屬性為DropDown,而不是DropDownList.然后設定匹配數據源,有兩種方法
第一種.采用CustomSource當做提示集合,自已構造的下拉提示內容.
1 //經營單位 2 3 AutoCompleteStringCollection strings = new AutoCompleteStringCollection(); 4 DataTable dt = customformOp.CusList().Tables[0]; 5 if (dt.Rows.Count > 0) 6 { 7 //cmbTRADE_CO.DisplayMember = "CusName";//顯示字段 8 //cmbTRADE_CO.ValueMember = "Cus"; 9 //cmbTRADE_CO.DataSource = dt; 10 //cmbTRADE_CO.SelectedIndex = -1; 11 for (int i = 0; i < dt.Rows.Count; i++) 12 { 13 strings.Add(dt.Rows[i]["CusName"].ToString()); 14 } 15 } 16 17 cmbTRADE_CO.AutoCompleteCustomSource = strings; 18 cmbTRADE_CO.AutoCompleteSource = AutoCompleteSource.CustomSource; 19 cmbTRADE_CO.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
第二種.直接使用下拉列表中的項作為匹配的集合 (請仔細看兩代碼的區別: cmbTRADE_CO.AutoCompleteSource =??)
1 // AutoCompleteStringCollection strings = new AutoCompleteStringCollection(); 2 DataTable dt = customformOp.CusList().Tables[0]; 3 if (dt.Rows.Count > 0) 4 { 5 cmbTRADE_CO.DisplayMember = "CusName";//顯示字段 6 cmbTRADE_CO.ValueMember = "Cus"; 7 cmbTRADE_CO.DataSource = dt; 8 cmbTRADE_CO.SelectedIndex = -1; 9 //for (int i = 0; i < dt.Rows.Count; i++) 10 //{ 11 // strings.Add(dt.Rows[i]["CusName"].ToString()); 12 //} 13 } 14 15 // cmbTRADE_CO.AutoCompleteCustomSource = strings; 16 cmbTRADE_CO.AutoCompleteSource = AutoCompleteSource.ListItems; 17 cmbTRADE_CO.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
其AutoCompleteMode的4種情況各代表:
None:關閉自動補全功能
Suggest:展開下拉列表並顯示匹配的結果
Append:自動補全
SuggestAppend:Suggest和Append的組合,即顯示下拉列表也自動補全。
最終結果效果圖: