2

我可以使用下面的代码来检查用户是否在 datagridview 单元格中输入了字符串。如果用户输入一个字符串,则会弹出一条消息告诉他们“只允许输入数字”。这正是我想要我的代码做的事情。但是,如果我尝试在填充有数字的数据列中使用此代码,则会收到一条错误消息,显示“发生错误,正在解析提交”。如果有人能够找出问题所在,我将不胜感激!

If (e.ColumnIndex = 3) Then 'checking numeric value for column 3 only
        Dim value As String = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
        For Each c As Char In value
            If Not Char.IsDigit(c) Then
                MessageBox.Show("Please Enter numeric Value")
                DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 3 'This will set the defaultvalue of the datagrid cell in question to the value of "3"
                Exit Sub
            End If
        Next
    End If
4

2 回答 2

3

此解决方案不仅检查非整数值,它还适用于填充了整个数据网格视图的数字的每一列。此外,如果用户输入非整数,如果将为 datagridviewcell 提供默认值,则此默认值是前一个数字。

Private Sub DataGridView1_DataError(ByVal sender As Object, _
ByVal e As DataGridViewDataErrorEventArgs) _
Handles DataGridView1.DataError

    If StrComp(e.Exception.Message, "Input string was not in a correct format.") = 0 Then
        MessageBox.Show("Please Enter a numeric Value") 
        'This will change the number back to original
        DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = " "
    End If




End Sub
于 2013-06-21T14:35:59.890 回答
2

在单元验证事件中执行此操作...

If (e.ColumnIndex = 3) Then 'checking numeric value for column 3 only

    If Not Isnumeric(e.Formatted.Value) Then

        MessageBox.Show("Please Enter numeric Value")
        DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 3 'This will set the defaultvalue of the datagrid cell in question to the value of "3"
        Exit Sub

    End If

End If
于 2013-06-18T23:18:21.530 回答