检查Datagridview中的Range是否包含","如果是,请将其更改为":"

时间:2016-02-01 07:29:28

标签: vb.net datagridview

我的应用程序包含一个Datagridview,用户可以输入以下值:Day,Time,他工作了多少小时等等。问题是我的第二个应用程序使用这些数据计算。它必须采用某种格式。 就像时间应该是" 09:15",但我注意到有些用户正在使用" 09,15"代替。你可以帮助我吗,我需要一个代码,可以检查Datagridview中的Range是否包含一些"被列入黑名单的char"如果是,则用正确的替换它。 谢谢大家。

2 个答案:

答案 0 :(得分:0)

DataGridView中,您有一个句柄可以检查已编辑的单元格的有效性:CellValueValidating。在考虑用户更改(CellValueChanged事件)之前调用它。

您可以在此处找到示例和说明: - https://msdn.microsoft.com/en-us/library/ykdxa0bc(v=vs.110).aspx - https://msdn.microsoft.com/en-us/library/7ehy30d4(v=vs.110).aspx

您还可以查看CellValueChangedCellValueValidatedCellEndEdit个事件。

答案 1 :(得分:0)

不要将值保存为字符串。
在所需类型中直接验证输入字符串 然后验证的值传递给第二个应用程序。 在这种情况下,您不需要“列入黑名单的字符”

Private Sub DataGridView_CellValidating(sender As Object, 
                                        e As DataGridViewCellValidatingEventArgs)
    If e.RowIndex < 0 Then Exit sub
    Dim dgv As DataGridView = DirectCast(sender, DataGridView)
    Dim columnIndexWithInteger As Integer = 2
    Dim columnIndexWithDate As Integer = 3

    Select Case e.ColumnIndex
        Case columnIndexWithInteger 
            Dim temp As Integer
            If Integer.TryParse(e.FormattedValue, temp) = False Then
                e.Cancel = True
            End If

        Case columnIndexWithDate 
            Dim temp As Date
            If Date.TryParse(e.FormattedValue, temp) = False Then
                e.Cancel = True
            End If

    End Select
End Sub