首页 文章

DataGridView行在验证时被清除

提问于
浏览
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的错误吗?

非常感谢

1 回答

  • 0

    我对sentense有问题:“确保只从ComboBox中选择有效值 . ”使用组合框实际上应该防止在文本框之类的控件中出现错误的值,为什么不在组合框中显示有效值,或者如果你需要验证组合框选择的组合,那么在完成所有的查询后验证,因此你可能需要一些东西像一个提交按钮来运行验证例程 .

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

相关问题