我有一个带有自动完成组合框列的绑定 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(使用前将#替换为@)