在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)上,所以就不起作用了。 |