Vb.net 验证检查只检查第一个if语句,而忽略第二个if语句

Vb.net 验证检查只检查第一个if语句,而忽略第二个if语句,vb.net,validation,datagridview,Vb.net,Validation,Datagridview,我有一个datagridview列,我希望防止用户将单元格留空或输入负数。我发现,当我更改IF语句的顺序时,首先要进行空白验证检查,代码是有效的,但不是用于否定验证,反之亦然。那么,为什么代码只对第一个if语句起作用,而忽略了第二个if语句呢?我非常感谢任何人在此方面提供的任何帮助或建议。:) 如果(e.ColumnIndex=0),则“仅检查列1的值” 将单元格数据设置为整数 如果是(Int32.TryParse(DataGridView1.Rows(e.RowIndex).Cells(e.C

我有一个datagridview列,我希望防止用户将单元格留空或输入负数。我发现,当我更改IF语句的顺序时,首先要进行空白验证检查,代码是有效的,但不是用于否定验证,反之亦然。那么,为什么代码只对第一个if语句起作用,而忽略了第二个if语句呢?我非常感谢任何人在此方面提供的任何帮助或建议。:)

如果(e.ColumnIndex=0),则“仅检查列1的值”
将单元格数据设置为整数
如果是(Int32.TryParse(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex.Value,cellData)),那么
如果cellData<0,则
MessageBox.Show(“不允许使用负数”)'这可以防止出现负数
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value=“Name”
Exit Sub’这是我希望返回给DataGridiveWell的默认值
如果结束
其他的
Dim testData As String=DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
如果(String.IsNullOrEmpty(testData)),则
MessageBox.Show(“不能为空”)
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value=“Name”'这是我希望在消息框后面提供的默认值
如果结束
如果结束
如果结束
如果(e.ColumnIndex=0),则“仅检查列1的值”
将单元格数据设置为整数
如果不是DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value则为DBNull.Value,然后
如果是(Int32.TryParse(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex.Value,cellData)),那么
如果cellData<0,则
MessageBox.Show(“不允许使用负数”)
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value=“供应商名称”
出口接头
如果结束
如果结束
如果(String.IsNullOrEmpty(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)),则
MessageBox.Show(“不能为空”)
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value=“供应商名称”
出口接头'
如果结束
其他的
MessageBox.Show(“不能为空”)
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value=“供应商名称”
出口接头
如果结束
如果结束

您应该将
DBNull.Value
String.IsNullOrEmpty
组合成一个条件,然后只需处理一次“不能为空”的情况。
If (e.ColumnIndex = 0) Then 'checking value for column 1 only
        Dim cellData As Integer

        If (Int32.TryParse(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value, cellData)) Then
            If cellData < 0 Then
                MessageBox.Show("Negative Numbers Not Allowed") 'This prevents negative numbers
                DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Name"
                Exit Sub ' Again this a default value I want supplied back to the datagridivewcell 
            End If
        Else
            Dim testData As String = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
                If (String.IsNullOrEmpty(testData)) Then
                MessageBox.Show("Cannot Be Empty")
                DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Name" ' This is a default value that I want to supply after the message box
            End If
        End If

    End If
If (e.ColumnIndex = 0) Then 'checking value for column 1 only
        Dim cellData As Integer

        If Not DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value Is DBNull.Value Then
            If (Int32.TryParse(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value, cellData)) Then
                If cellData < 0 Then
                    MessageBox.Show("Negative Numbers Not Allowed")
                    DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Vendor Name"
                    Exit Sub
                End If
            End If
            If (String.IsNullOrEmpty(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)) Then
                MessageBox.Show("Cannot Be Empty")
                DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Vendor Name"
                Exit Sub '
            End If
        Else
            MessageBox.Show("Cannot Be Empty")
            DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Vendor Name"
            Exit Sub
        End If
    End If