我在数据类datagridview
中有一个数据类型为datetime
的列,它只显示时间。如果用户输入时间,则单元格的日期和时间将在.CellValueChanged
事件中设置,日期来自另一列。
如果用户以正确的格式输入时间,它将按预期工作。
因此,如果用户输入“8:00”,则会将其正确解析为时间。更新日期和时间,单元格显示“8:00”
如果用户输入8,则dataerror
事件将触发。
我想获取用户输入,并将其转换为时间。但是,在下面的示例中,变量numberinput
为NULL
,而不是用户输入的内容。
我可以捕获用户输入的内容吗?
Private Sub DataGridView1_DataError(sender As Object, e As DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
'handle incorrect date formats
e.ThrowException = False
Dim numberinput As Single
numberinput = Val(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)
Select Case True
Case Val(numberinput) = 0
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = DBNull.Value
Case numberinput = Int(numberinput)
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = RelevantDate.AddHours(numberinput)
End Select
e.Cancel = False
End Sub
答案 0 :(得分:0)
我想我正在吠叫错误的树,看着.DataError
这有效:
Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
If DataGridView1.CurrentRow.Cells(e.ColumnIndex).IsInEditMode Then
Dim c As Control = DataGridView1.EditingControl
If DataGridView1.Columns(e.ColumnIndex).ValueType = Type.GetType("System.DateTime") Then
c.Text = CleanInputDate(c.Text)
End If
End If
End Sub
从这个问题中直接解除了: How to restrict user input to a couple values in a DataGridView