Master-detail datagridviews:RowValidating& CellValidating on details DGV无法阻止用户离开无效单元格

时间:2014-10-01 09:40:01

标签: c# validation datagridview master-detail

在我的WinForms应用中。我有主要细节DatagridViews。 我在详细网格上有一个RowValidating和CellValidating事件处理程序。

如果细节单元格/行验证失败,我将e.Cancel设置为TRUE。 这可以防止用户在细节网格中留下单元格/行,除了一种情况:

当用户在详细信息单元格中插入无效数据并直接将焦点移动到不是其父级的主记录时,则不会阻止用户离开该无效单元格!

此外,当我返回到无效的单元格时,我发现无法接受无效值,并且单元格具有旧值。

另一种情况:如果我删除单元格的值而不是插入无效值,则e.Cancel也设置为TRUE,因为该值是必需的。我重复上一个场景,当我回到那个单元格时,我发现它是EMPTY,甚至没有旧的价值...

无论如何可以告诉我如何防止用户留下无效的细节单元格?

1 个答案:

答案 0 :(得分:0)

我使用简单的解决方法解决了这个问题。

详细网格CellValidating,当输入为无效时,我会执行以下操作:

e.Cancel = true;
MessageBox.Show("message to inform user");

用户将单击“确定”关闭消息框,这足以使焦点集中在详细网格中的无效单元格上。

我希望这会对别人有所帮助。