不多说了,如图,应客户要求,下拉框中需要自动匹配字符,可能有些人一早就对此很熟,但相对于我还是首次使用,还是花了一点时间,现记录下来,也希望能帮助大家更好的理解.
首先要设定Combobox的DropDownStyle属性为DropDown,而不是DropDownList.然后设定匹配数据源,有两种方法
第一种.采用CustomSource当做提示集合,自已构造的下拉提示内容.
//经营单位 AutoCompleteStringCollection strings = new AutoCompleteStringCollection();
DataTable dt = customformOp.CusList().Tables[];
if (dt.Rows.Count > )
{
//cmbTRADE_CO.DisplayMember = "CusName";//显示字段
//cmbTRADE_CO.ValueMember = "Cus";
//cmbTRADE_CO.DataSource = dt;
//cmbTRADE_CO.SelectedIndex = -1;
for (int i = ; i < dt.Rows.Count; i++)
{
strings.Add(dt.Rows[i]["CusName"].ToString());
}
} cmbTRADE_CO.AutoCompleteCustomSource = strings;
cmbTRADE_CO.AutoCompleteSource = AutoCompleteSource.CustomSource;
cmbTRADE_CO.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
第二种.直接使用下拉列表中的项作为匹配的集合 (请仔细看两代码的区别: cmbTRADE_CO.AutoCompleteSource =??)
// AutoCompleteStringCollection strings = new AutoCompleteStringCollection();
DataTable dt = customformOp.CusList().Tables[];
if (dt.Rows.Count > )
{
cmbTRADE_CO.DisplayMember = "CusName";//显示字段
cmbTRADE_CO.ValueMember = "Cus";
cmbTRADE_CO.DataSource = dt;
cmbTRADE_CO.SelectedIndex = -;
//for (int i = 0; i < dt.Rows.Count; i++)
//{
// strings.Add(dt.Rows[i]["CusName"].ToString());
//}
} // cmbTRADE_CO.AutoCompleteCustomSource = strings;
cmbTRADE_CO.AutoCompleteSource = AutoCompleteSource.ListItems;
cmbTRADE_CO.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
其AutoCompleteMode的4种情况各代表:
None:关闭自动补全功能
Suggest:展开下拉列表并显示匹配的结果
Append:自动补全
SuggestAppend:Suggest和Append的组合,即显示下拉列表也自动补全。
最终结果效果图: