我希望在满足某些条件时(大多数情况下不为空),第4列的内容将使用第1列和第3列的组合内容进行更新。
请注意,如果我点击和关闭已完成的单元格,它会按预期工作。好像CellLeave事件不知道最终的内容。第一次正确捕获Cell(0)中的值。它是Cell(2)又名当前列。
这就是我所拥有的:
Private Sub DataGridView2_CellLeave(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView2.CellLeave
'Dim CurrentColumnIndex As Integer = DataGridView2.CurrentCell.ColumnIndex
'Dim CurrentRowIndex As Integer = DataGridView2.CurrentCell.RowIndex
If e.ColumnIndex = 2 Then
If DataGridView2.Rows(e.RowIndex).Cells(1).Value <> "" Then
DataGridView2.Rows(e.RowIndex).Cells(3).Value = DataGridView2.Rows(e.RowIndex).Cells(0).Value & "-" & DataGridView2.Rows(e.RowIndex).Cells(2).Value
End If
End If
End Sub
我对替代方法持开放态度,但我已经完成了这个方法,所以替代方法应该很简单。
我想要的结果:
+---+----+-----+ +---+---+-----+ | 1 | a | | ---> | 1 | a | 1-a | +---+----+-----+ +---+---+-----+
我的问题:
+---+----+-----+ +---+---+-----+ +---+---+-----+ | 1 | a | | ---> | 1 | a | 1- | ---> | 1 | a | 1-a | +---+----+-----+ +---+---+-----+ +---+---+-----+
第一步是我进入的地方,第二步是当我离开牢房时发生的事情,第三步是当我重新进入和离开牢房时发生的事情。
答案 0 :(得分:3)
当然,您不会在CellLeave
事件中获得更改的值,因为尚未提交更改。在您的情况下,您在第三步中获取值,因为当时已提交更改的值。
如果您想获得更改的值,请订阅CellValueChanged
事件。
dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
在示例程序中,我将单元格值从1更改为3.查看事件如何触发以及值发生更改。