再MRWin中,主要有以下几个条件会影响到CurrentCell变化时的事件顺序。

1. 变化是由数据源的Current变化引起的,而不是MultiRow引起的。
2. CurrentCell移出了当前行
3. 当前Cell正处于编辑状态
4. 当前Cell处于编辑状态并且当前值已经变化但没有提交到数据源。
5. EditMode设置为EditOnEnter

下面是整个过程中的主要事件及触发顺序和条件:

1. NewCellPositionNeeded (只有条件1不满足时触发)
2. CellLeave
3. RowLeave (只有条件2满足时触发)
4. CellValidating (只有条件1不满足时触发)
5. CellValueChanged (只有条件1不满足,条件4满足时触发。因为,如果是数据源的变化引起的变化,当前编辑的值会被丢弃。)
6. CellValidated (只有条件1不满足时触发)
7. RowValidating (只有条件1不满足,且条件2满足时触发)
8. RowValidated (只有条件1不满足,且条件2满足时触发)
9. EndEdit (当条件3满足时触发)
10. RowEnter (只有条件2满足时触发)
11. CurrentCellChanged
12. CellEnter
13. SelectionChanged
14. BeginEdit (当条件5满足时触发)
15. EditingControlShowing (当条件5满足时触发)

以上仅仅是主要的和Navigation, Selection, Editing, Validation相关的事件,在这个过程中还会触发多次CellFormatting事件,CellPainting事件和 CellValueNeeded事件(如果你开启了VirtualMode),如果值发生变化(条件4满足),会触发CellParsing和 CellValuePushed事件。这里就不在详述了。