2013-06-18 100 views
2

我可以使用下面的代碼來檢查用戶是否在datagridview單元格中輸入字符串。如果用戶輸入一個字符串,會彈出一條消息告訴他們「只允許數字輸入」。這正是我想要我的代碼做的。但是,如果我嘗試在填充數字的數據列中使用此代碼,我會收到一條錯誤消息,指出「發生錯誤,解析提交」。如果有人能夠找出問題在這裏,我將不勝感激!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 

回答

2

爲此在cellvalidating事件......

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 
+0

我不是這樣的。你可以解釋嗎? – stackexchange12

+0

它說「e.columnindex」不是EditingControlShowing的一部分 – stackexchange12

+0

它仍然不起作用 – stackexchange12

3

這種解決方案對於非整數不僅檢查重視它也適用於填充了整個datagridview的數字每列。另外,如果用戶輸入非整數,如果將爲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