如果满足某些条件,我正在尝试清除单元格。但它不起作用。
更新
Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellLeave
Dim laspac As Int16 = DataGridView1.Columns("LASPAC").Index
If e.ColumnIndex = laspac And DataGridView1.Rows(e.RowIndex).Cells("CType").Value.ToString.Trim() = "B" Then
Dim B_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells("LASPAC")
Dim A_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex - 1).Cells("LASPAC")
If B_LASPAC.Value.ToString.Trim.Length <> 0 Then
If Convert.ToDecimal(B_LASPAC.Value) + Convert.ToDecimal(A_LASPAC.Value) > 0 Then
B_LASPAC.Value = ""
End If
End If
End If
End Sub
这很简单,只需传递 RowIndex 和 ColumnIndex
例如。
Dim rowId = 0
Dim colId = 1
DataGridView1(colId, rowId).Value = "HELLO"
所以,在你的情况下...类似的东西
If ... Then
DataGridView1(e.ColumnIndex, e.RowIndex).Value = ""
End If
我必须使用B_LASPAC.EditedFormattedValue.ToString()
而不是B_LASPAC.Value.ToString()
来获取单元格离开时单元格的值,并且我还意识到我需要在设置单元格的新值之前使用DataGridView1.EndEdit()
结束 DataGridView 的编辑模式B_LASPAC.Value = ""
Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellLeave
Dim laspac As Int16 = DataGridView1.Columns("LASPAC").Index
If e.ColumnIndex = laspac And DataGridView1.Rows(e.RowIndex).Cells("CType").Value.ToString.Trim() = "B" Then
Dim B_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells("LASPAC")
Dim A_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex - 1).Cells("LASPAC")
Dim str As String = DataGridView1.Rows(e.RowIndex).Cells("LASPAC").EditedFormattedValue.ToString()
If B_LASPAC.EditedFormattedValue.ToString.Trim.Length <> 0 Then
If Convert.ToDecimal(B_LASPAC.EditedFormattedValue.ToString()) + Convert.ToDecimal(A_LASPAC.EditedFormattedValue.ToString()) > 0 Then
DataGridView1.EndEdit()
B_LASPAC.Value = ""
End If
End If
End If
End Sub