DataGridView 自动完成组合框列不保留初始单元格离开时的值

2024-05-03

我有一个带有自动完成组合框列的绑定 dataGridView,并且自动完成功能正在工作,只是我观察到一种有点令人恼火的行为。

当我第一次在自动完成单元格中键入文本并使用 tabKey 移动到下一个单元格时,我的选择不会保留,我选择的内容将被清除,并且自动完成单元格保留为空。如果我立即使用向左箭头键返回到该自动完成单元格并输入文本,则我选择的内容将被保留,不会出现任何问题。

因此,我遇到的问题是让单元格保留我的第一个初始选择,现在唯一的解决方法是按 Tab 到下一个单元格,然后返回到这个有问题的自动完成组合框单元格并全部进行键入。此时,它起作用了。

我应该处理一些事件来在单元格离开时提交我选择的文本吗?

Code:

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

编辑:在下面的 CellLeave 上,即使我做出了选择,值也返回为 null。

 private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
    {
        var Row = this.dataGridView1.CurrentRow.Index;
        string value = this.dataGridView1["itemID", Row].Value.ToString();
    }

处理 CurrentCellDirtyStateChanged 事件解决了该问题,但我希望它不会导致其他问题!

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DataGridView 自动完成组合框列不保留初始单元格离开时的值 的相关文章

随机推荐