如何以编程方式设置 DataGridView 单元格的值



如果满足某些条件,我正在尝试清除单元格。但它不起作用。

更新

 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

相关内容

  • 没有找到相关文章

最新更新