0

我有一个 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 的错误吗?

非常感谢

4

1 回答 1

0

我对句子有疑问:“确保从 ComboBox 中只选择有效值。” 使用组合框实际上应该防止在文本框等控件中提示错误的值,为什么不只在组合框中显示有效值,或者如果您需要验证组合框的组合,则在完成所有销售后进行验证,因此您可能需要一些东西像一个提交按钮来运行验证例程。

如果您仍然认为必须在每次销售后验证组合框,那么您必须以某种方式在组合框的 SelectionChanged 事件上运行验证。

于 2012-09-21T10:52:44.807 回答