如何在DataGridViewComboBoxColumn中使用AutoComplete?

Isa*_*ger 1 c# autocomplete

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

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

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

帮助将不胜感激!谢谢.

V4V*_*tta 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)