我有一个 DataGridView,我需要运行一个 CellValidating 事件以确保从 ComboBox 中只选择有效值。这是必需的,因为 ComboBox 包含用于显示类别的虚拟行,用户可以选择的字段列在每个类别下方。
虽然我的验证代码工作正常,但有一个不受欢迎的副作用,即所有值都被从正在验证的行中擦除。我已将事件处理程序中的代码剥离到此,问题仍然存在:
private void dgvInformation_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DataGridView dgv = this.dgvInformation;
DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
如果我删除
DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
行,则问题不会发生。
DGV 不受约束,我认为这是导致问题的原因。作为测试,我制作了一个简单的表单并填充了未绑定的 DGV 值,并且每次 CellValidating 事件触发该行时都会被清除,但是当我创建 List<> 并将其用作 DataSource 时,值不会被清除。这可能是未绑定 DGV 的错误吗?
非常感谢