C# 在DataGridViewComboBoxColumn中实现自动完成的方法?

C# 在DataGridViewComboBoxColumn中实现自动完成的方法?,c#,autocomplete,C#,Autocomplete,我已经成功地让autocomplete在常规组合框中工作。如果用户键入列表中不存在的内容,我使用leave事件将选择设置为null 现在,我想在DataGridViewComboBoxColumn中执行此操作。但是,通常的属性(如AutoCompleteMode和AutoCompleteSource)缺失。我听说有一种方法可以通过使用casting来完成,但是我不能很好地阅读VB语言说明。理想情况下,我想创建一个新的派生类,这样我就可以轻松地反复使用它 另一个问题是,我需要知道截取什么事件,以便

我已经成功地让autocomplete在常规组合框中工作。如果用户键入列表中不存在的内容,我使用leave事件将选择设置为null

现在,我想在DataGridViewComboBoxColumn中执行此操作。但是,通常的属性(如AutoCompleteMode和AutoCompleteSource)缺失。我听说有一种方法可以通过使用casting来完成,但是我不能很好地阅读VB语言说明。理想情况下,我想创建一个新的派生类,这样我就可以轻松地反复使用它

另一个问题是,我需要知道截取什么事件,以便将组合框重置为其旧值,或者如果该项不在列表中,则重置为null


谢谢你的帮助!谢谢。

您可以通过实现网格的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;
        }
    }

对于
DataGridViewComboBoxColumn
,有一个
AutoComplete

例如:

DataGridViewComboBoxColumn comboBox = DataGridViewComboBoxColumn();
combobox.AutoComplete = true;

是的,我已经知道如何将自己的控件导入datagridview。不过,我更喜欢为启用自动完成功能的框创建自己的列类,这样我就可以在dgv的列设置部分插入它所需的属性,而不是反复处理此事件。