【问题标题】:When entering an invalid entry in DataGridView Cell after entering a valid entry, how do I get the current cell value?输入有效条目后在DataGridView单元格中输入无效条目时,如何获取当前单元格值?
【发布时间】:2023-03-10 12:20:02
【问题描述】:

我有一个具有 TextBox 列的 DataGridView 控件。在 DataGridView.CellValidating 事件中,我使用以下代码来验证条目是否为可接受的日期:

dgvStartingGrid.EndEdit()
Dim dteStartTime As DateTime
If Not Date.TryParse(dgvStartingGrid.CurrentRow.Cells(4).Value, dteStartTime) Then
    MessageBox.Show("Please enter a starting time in one of the following formats:" & vbCrLf & _
    vbCrLf & "- MM/DD/YY HH:MM:SS (24 Hour Format)" & vbCrLf & "- HH:MM:SS (24 Hour Format)" & _
    vbCrLf & "- HH:MM:SS (AM/PM) (12 Hour Format)", "Start Time Entry Error")
    e.Cancel = True
End If

此代码在第一次编辑单元格时运行良好。

我遇到的问题是,如果我输入了一个有效日期,然后再回到单元格并输入一个无效日期,在 CellValidating 事件中,它会跳过这个 If...End If 块,因为它显示当前单元格值是旧的有效日期,而不是当前单元格中的无效条目。

如何提交或获取当前驻留在 DataGridView 单元格中的无效值?

谢谢

【问题讨论】:

    标签: vb.net datagridview datagridviewtextboxcell


    【解决方案1】:

    改用 CellValidated 事件。

    CellValidating 事件在替换新单元格值之前被调用

    【讨论】:

    • 这似乎不起作用。如果我输入正确的日期时间格式,例如 8:00,则单元格将被验证。下次我在同一个单元格中输入无效的日期时间时,例如“8”,CellValidating 事件将运行并且不会出错,但 CellValidated 事件将不会运行。这两者之间是否发生了一些事件?有没有办法查看可能阻止 CellValidated 事件运行的错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多