验证DataGridView Windows窗体

本文关键字:窗体 Windows DataGridView 验证 | 更新日期: 2023-09-27 17:54:03

我有两个窗体与网格视图,一个从数据库数据源和一个从实体框架dbset的。当我按add row时,它会添加一行,我可以编辑ID。另一种形式,当我加上行时,ID是负的。而不是从前一个增加。不知道为什么。但我遇到的问题是,当我点击出我添加的列而没有填充它时,它会验证并给出一个错误。我希望在最后单击save时发生这种情况。

现在我有这些事件处理程序的表:

AddNewItem_Click, SaveItem_Click, DeleteItem_Click, CellContentClick,更重要的是:cellvalididating, CellValidated, cellenddit,以及最重要的cellvaluechange。

我在某处读到使用cellvaluechange是确保当我更改单元格时不会发生验证的最佳方法。但我找不到一个例子。基本上,只要这个网站说到验证和验证,当你用鼠标改变单元格时,有一些步骤会发生,我不在乎键盘。

  1. 输入2。GotFocus 3。LostFocus 4。离开5。验证6。验证

当单元格失去焦点时,我得到错误,因为它没有通过验证。然而,在我的EF创建的表单上,这不会发生。如何阻止这种行为在每次单元格失去焦点时进行验证?

我的另一个问题是:正如我之前所说的,在我的非ef表单中使用DataGridViews,当我添加一行时,它会添加一个负数作为PK的ID。我也不能通过单击它来编辑该单元格。在EF表单中,我可以单击单元格并编辑它,它不添加负数,虽然它可能不会使数字连续,但我可以自己编辑它们并修复它们。为什么我有这两者之间的差异?唯一的区别是其中一个数据视图是从EF数据源创建的,而其他数据视图是从原始sql数据库数据源创建的。

那么我如何在不验证的情况下更改单元格,以及如何使这些ID不为负?另外,我如何使ID列中的单元格像EF表单一样可编辑。

任何建议都会有很大帮助,例子对我很有帮助,因为我是一个视觉学习者。

如果你需要任何代码或信息,请问,我会张贴它,我不确定张贴什么,因为没有自定义的事件处理程序。

谢谢

验证DataGridView Windows窗体

答案是将this.CausesValidation = false添加到正在触发的事件处理程序中。