DataGridViewCombobox列中的AutoComplete有什么奇怪的行为?

hou*_*sam 6 c# combobox datagridview datagridviewcombobox datagridviewcomboboxcell

我正在使用(EditingControlShowing)事件在DataGridViewComboBox列中启用自动完成.

private void dataGridView1_EditingControlShowing(object sender,  DataGridViewEditingControlShowingEventArgs e)
{
    if (e.Control is DataGridViewComboBoxEditingControl)
    {
        ComboBox combo = (ComboBox)e.Control;
        ((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
        ((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems;
        ((ComboBox)e.Control).AutoCompleteMode =  System.Windows.Forms.AutoCompleteMode.SuggestAppend;
    }
}
Run Code Online (Sandbox Code Playgroud)

但它有一个奇怪的行为,当我键入一些字符然后我离开单元格(Tab或右键),值没有改变.
但如果我重复一遍,那么价值就会改变.从这里,您可以下载解释问题的源代码和(EXE)视频.

你能帮助我让它正常工作吗?

Dav*_*all 4

看起来,对于组合框的第一次输入,选项卡不再触发值的提交。不知道为什么会这样,但似乎处理CurrentCellDirtyStateChanged和提交编辑可以修复它。

void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    // You could also check here to see if the cell in question is the combobox
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}
Run Code Online (Sandbox Code Playgroud)