C# DatagridView组合框的自动完成
我有一个用于绑定值的数据网格视图 我在这个DatagridView中有一个组合框;我想在这个组合框中实现一个自动完成属性。它不仅要搜索第一个字母,还要搜索整个项目…这可以通过C# DatagridView组合框的自动完成,c#,datagridview,C#,Datagridview,我有一个用于绑定值的数据网格视图 我在这个DatagridView中有一个组合框;我想在这个组合框中实现一个自动完成属性。它不仅要搜索第一个字母,还要搜索整个项目…这可以通过 抓取组合框 操作其项 假设您只有一个ComboBoxColumn;然后您可以抓取当前实例,如下所示: ComboBox editCombo = null; // class level variable private void dataGridView1_EditingControlShowing(objec
- 抓取
组合框
- 操作其
项
ComboBoxColumn
;然后您可以抓取当前实例,如下所示:
ComboBox editCombo = null; // class level variable
private void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
editCombo = e.Control as ComboBox;
if (editCombo != null)
{
// here we can set its style..
editCombo.DropDownStyle = ComboBoxStyle.DropDown;
editCombo.AutoCompleteMode = AutoCompleteMode.Suggest;
// sigh..:
editCombo.TextChanged -= editCombo_TextChanged;
editCombo.TextChanged += editCombo_TextChanged;
}
}
假设您在列表中有有效的值列表
请注意,此x=>x.Contains(editCombo.Text)
搜索包含输入的全文的项目。我希望这就是你的意思;搜索与输入文本相同的项目毫无意义,因为这样您就不需要自动完成它们
List<string>() allChoices = new List<string>();
void editCombo_TextChanged(object sender, EventArgs e)
{
List<String> items = allChoices.Select(x=>x)
.Where(x=>x.Contains(editCombo.Text)).ToList();
if (items.Count > 0)
{
editCombo.Items.Clear();
editCombo.Items.AddRange(items.ToArray());
}
editCombo.Select(editCombo.Text.Length, 0); //clear the selection
}