我已经成功地在常规组合框中运行自动完成功能。如果用户键入不在列表中的内容,我使用leave事件将选择设置为null。
现在,我想在DataGridViewComboBoxColumn中执行此操作。但是,缺少AutoCompleteMode和AutoCompleteSource等常用属性。我听说有一种方法可以通过某种方式使用转换来完成,但我无法很好地阅读VB语言指令。理想情况下,我想创建一个新的派生类,这样我就可以轻松地一遍又一遍地使用这个东西。
另一个问题是我需要知道要拦截哪个事件以便将组合框重置为旧值,如果项目不在列表中,则需要为null。
帮助将不胜感激!感谢。
答案 0 :(得分:5)
您可以通过实现网格的EditingControlShowing事件来获得此功能。 基本上,当您编辑组合框列时,编辑控件是一个组合框 因此,通过投射,您可以设置自动完成的属性
void grdPerformanceScenario_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox)
{
(e.Control as ComboBox).AutoCompleteMode = AutoCompleteMode.Suggest;
(e.Control as ComboBox).AutoCompleteSource = AutoCompleteSource.ListItems;
}
}
答案 1 :(得分:0)
AutoComplete
有一个DataGridViewComboBoxColumn
。
例如:
DataGridViewComboBoxColumn comboBox = DataGridViewComboBoxColumn();
combobox.AutoComplete = true;