如何以编程方式设置DataGridView Cell的值?

时间:2014-01-07 10:38:36

标签: .net vb.net 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

2 个答案:

答案 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