主从数据网格视图:详细信息上的 RowValidating 和 CellValidating DGV 无法阻止用户留下无效单元格

编程


在我的 WinForms 应用程序中。 我有主从 DatagridViews。
我在详细信息网格上有 RowValidating 和 CellValidating 事件处理程序。

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

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

此外,当我返回到那个无效单元格时,我发现无效值未被接受,并且单元格具有其旧值。

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

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

解决方案1

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

在详细网格 CellValidating 中,当输入无效时,我执行以下操作:
除了将 e.Cancel 设置为 TRUE 之外,我还显示一个 MessageBox 来通知用户。 用户将单击“确定”关闭消息框,这足以将焦点集中在详细网格中的无效单元格上。

我希望这会帮助其他人。

コメント

タイトルとURLをコピーしました