我有一个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<>时并使用它作为数据源,不会消除值。这可能是未绑定的DGV的错误吗?
非常感谢
答案 0 :(得分:0)
我对sentense有问题:“确保只从ComboBox中选择有效值。”使用组合框实际上应该防止在文本框之类的控件中出现错误的值,为什么不在组合框中显示有效值,或者如果你需要验证组合框选择的组合,那么在完成所有的查询后验证,因此你可能需要一些东西比如提交按钮来运行验证例程。
如果您仍然认为必须在每次选择后验证组合框,那么您必须以某种方式在组合框的SelectionChanged事件上运行验证。