如果满足某些条件,我会尝试清除单元格。但它不起作用。
更新
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
答案 0 :(得分:1)
这很简单,只需传递 RowIndex 和 ColumnIndex
例如
Dim rowId = 0
Dim colId = 1
DataGridView1(colId, rowId).Value = "HELLO"
所以,在你的情况下......类似
If ... Then
DataGridView1(e.ColumnIndex, e.RowIndex).Value = ""
End If
答案 1 :(得分:0)
我不得不使用B_LASPAC.EditedFormattedValue.ToString()
而不是B_LASPAC.Value.ToString()
来获取单元格离开时单元格的值,而且我意识到我需要使用DataGridView1.EndEdit()
来结束DataGridView的EditMode就在我设置单元格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