我正在尝试找到一种方法来阻止用户在提供错误输入时退出datagridviewcell。对于有问题的datagridview列,我想阻止用户输入负数,包括零和空白字段。现在我能够阻止此输入,并显示相应的消息,但我不知道在显示消息后如何防止用户表单退出单元格。我的代码如下所示。如果有人对此问题有任何建议或解答,我将非常感谢您给予的任何帮助。
Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
If (e.ColumnIndex = 2) Then
Dim cellData = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
If cellData Is Nothing OrElse IsDBNull(cellData) OrElse cellData.ToString = String.Empty Then
MessageBox.Show("Cannot Be Empty")
e.Cancel = True
ElseIf cellData <= 0 Then
MessageBox.Show("Negative Numbers and Zero Not Allowed")
e.Cancel = True
Exit Sub
End If
End If
End Sub
答案 0 :(得分:1)
试试这种方式..
Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
If (e.ColumnIndex = 2) Then
Dim cellData = e.FormattedValue
If cellData Is Nothing OrElse IsDBNull(cellData) OrElse cellData.ToString = String.Empty Then
MessageBox.Show("Cannot Be Empty")
e.Cancel = True
Else
If val(cellData) <= 0 Then
MessageBox.Show("Negative Numbers and Zero Not Allowed")
e.Cancel = True
Exit Sub
Endif
End If
End If
End Sub
答案 1 :(得分:1)
又是你了;-)尝试使用SendKeys
并使用CellEndEdit
事件。这不是完美的解决方案,但至少它会完成工作(希望如此)。请参阅以下代码:
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
If (e.ColumnIndex = 0) Then 'checking value for column 1 only
Dim cellValue As Integer
If (Int32.TryParse(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value, cellValue)) Then
If cellValue < 0 Then
MessageBox.Show("Negative Numbers Not Allowed") 'This prevents negative numbers
SendKeys.Send("+{Tab}")
End If
Else
Dim testValue As String = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
If (String.IsNullOrEmpty(testValue)) Then
MessageBox.Show("Name Cannot Be Empty")
SendKeys.Send("+{Tab}")
End If
End If
End If
End Sub
答案 2 :(得分:0)
使用DataGridView.CellValidating
事件,并设置e.Cancel = true
:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvalidating.aspx