如何在DataGridViewComboBoxColumn中使用AutoComplete?

时间:2010-08-27 21:35:11

标签: c# autocomplete

我已经成功地在常规组合框中运行自动完成功能。如果用户键入不在列表中的内容,我使用leave事件将选择设置为null。

现在,我想在DataGridViewComboBoxColumn中执行此操作。但是,缺少AutoCompleteMode和AutoCompleteSource等常用属性。我听说有一种方法可以通过某种方式使用转换来完成,但我无法很好地阅读VB语言指令。理想情况下,我想创建一个新的派生类,这样我就可以轻松地一遍又一遍地使用这个东西。

另一个问题是我需要知道要拦截哪个事件以便将组合框重置为旧值,如果项目不在列表中,则需要为null。

帮助将不胜感激!感谢。

2 个答案:

答案 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;