junlingzhu2002 发表于 2012-5-7 15:16:00

NewCellPosition和CurrentCellPosition的区别

在NewCellPositionNeeded中
If e.RowIndex = e.NewCellPosition.RowIndex Then
※1e.NewCellPosition= New GrapeCity.Win.MultiRow.CellPosition(e.RowIndex , "B_SU")
Else
※2GcMultirow1.CurrentCellPosition= New GrapeCity.Win.MultiRow.CellPosition(e.NewCellPosition.RowIndex, e.NewCellPosition.CellIndex)
End If
问题
※1为什么不可以用GcMultirow1.CurrentCellPosition
※2为什么用NewCellPosition也可以,
上面的例子里可以统一用※1吗

robert 发表于 2012-5-8 14:05:00

在NewCellPositionNeeded事件里不能通过设置CurrentCellPosition来改变CurrentCell的位置。
这是应为NewCellPositionNeeded发的时机是在内部改CurrentCell的过程中。在内部逻辑中改CurrentCell实际上可以理解为3步。
例如,如果本来CurrentCell在(0,0)处,用户用鼠标点击了(1,1). 发生的过程是这样的:
1. 准备把改变CurrentCell。
2. 发NewCellPositionNeeded事件。
3. 把Cell移动到(1,1)。

如果在第二步里改变NewCellPosition属性。第三步就会把Cell移动到NewCellPosition的位置。
但是如果在第二步里改变CurrentCellPosition到其他Cell。在执行第三步的时候,又会把CurrentCell拉回到(1,1)上,所以就不起作用了。

junlingzhu2002 发表于 2012-5-10 16:19:00

谢谢
页: [1]
查看完整版本: NewCellPosition和CurrentCellPosition的区别