回复 4楼Alice的帖子
这个也给奖励啊 太好了 呵呵
其实我没有测试出来具体的原因,说下我的测试结果吧,我在CreateCellContentEditor方法中,对base.CreateCellContentEditor(grid, bdr, rng);执行之后,监听了刚创建的C1FlexGridComboBox控件的LostFocus事件和Unloaded事件。当只有一列时,编辑后点击行头时,并没有触发LostFocus和Unloaded事件,也就是说此时的C1FlexGridComboBox控件未释放掉,仍在,鼠标移到单元格上可以看到形状仍然为编辑状态下的鼠标形状,此时只需要单击一下就可以进入编辑了。当有多列时,编辑后点击行头就可以触发LostFocus和Unloaded事件,而在触发LostFocus事件后也就会触发C1FlexGrid的CellEditEnded和CellEditEnding事件了,此时是会释放掉C1FlexGridComboBox控件的。
我发现点击行头的效果是会选中当前一整行,也就是会设置C1FlexGrid的Selection,而只有一列的时候,Selection根本没有变,也就不会触发SelectionChanged事件和重绘单元格,所有就想了个折中的办法,在RowHeaders区域的MouseLeftButtonDown事件里加了一个改变Selection的操作。
我还发现啊,如果只有一行的时候,编辑单元格后再点击列头时,是会触发CellEditEnded和CellEditEnding事件的,这我就郁闷了,然后同样在CreateCellContentEditor中对新创建的C1FlexGridComboBox控件进行监听,监听LostFocus事件,好家伙,即时LostFocus事件里啥都不做,而此时的情况就跟只有一列时编辑单元格后点击行头的情况一模一样。。。好吧,原理机制不清楚的我已经开始凌乱了。。。 |