找回密码
 立即注册

QQ登录

只需一步,快速开始

junlingzhu2002

银牌会员

38

主题

150

帖子

3344

积分

银牌会员

积分
3344

活字格认证

junlingzhu2002
银牌会员   /  发表于:2012-5-7 15:16  /   查看:5260  /  回复:2
在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吗

2 个回复

倒序浏览
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
板凳
谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部