Replied 8 September 2017, 3:22 pm EST
OK, sorry in advance for the long-winded answer! I will try to explain all about the Spread API design for events and user actions. We have tried to support a lot of cases, including custom ones, so we can probably help you do what you need better if you explain in more detail what your real goal is (e.g. what requirement you are trying to implement).
By design, most APIs in Spread will not fire events like Change or EditChange, and those events only fire when the user does some action in run time to cause the event to fire. For details about events which fire only for user actions, please see here:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#spwin-actions-all.html
Some APIs are specifically designed to emulate user actions and will cause events to fire. The Action and UndoAction base classes are common to most of those APIs, and for cell edit action you can use CellEditUndoAction:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#FarPoint.Win.Spread~FarPoint.Win.Spread.UndoRedo.CellEditUndoAction~_ctor.html
To use the action, call PerformUndoAction on the UndoManager for the control:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#FarPoint.Win.Spread~FarPoint.Win.Spread.UndoRedo.UndoManager~PerformUndoAction.htmlhttp://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#FarPoint.Win.Spread~FarPoint.Win.Spread.FpSpread~UndoManager.html
That will cause the Change event to fire as if the user made the change.
EditChange fires when the user is editing the cell and typing a change in the cell editor. For that event to fire, the cell must be in edit mode, and the action must act on the cell editor control rather than the spreadsheet itself. Undo/redo is not supported for cell edit actions (undo state would get far too large!) so you must use Action as the base class for that type of action. In general, using an Action just requires calling the PerformAction method and passing in the SpreadView instance on which to perform the action:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#FarPoint.Win.Spread~FarPoint.Win.Spread.Action~PerformAction.html
The SpreadView instance is usually just the object returned by FpSpread.GetRootWorkbook:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#FarPoint.Win.Spread~FarPoint.Win.Spread.FpSpread~GetRootWorkbook.html
There are many built-in Action and UndoAction objects:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#FarPoint.Win.Spread~FarPoint.Win.Spread.SpreadActions_members.htmlhttp://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#FarPoint.Win.Spread~FarPoint.Win.Spread.UndoRedo.UndoAction.html
Action and UndoAction objects can also be mapped to particular keys in the InputMap, so the user can activate the action using the specified keys:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#spwin-maps-action.html
That API is rather complex (there are many different input maps for mapping different levels of keyboard input between the spreadsheet and the cell editors and various operation modes) so I recommend reading these topics if you are interested in customizing the keyboard interaction:http://sphelp.grapecity.com/WebHelp/SpreadNet9/WF/webframe.html#spwin-mappingkeys.html
Finally, you can create custom Action and UndoAction classes to implement whatever action you need in your application for your users, and associate those actions directly with particular keys and described above. There's an example custom undo action here for reference:http://sphelp.grapecity.com/2012/09/18/handle-undo-for-custom-actions-performed-on-spread/
Hope that helps! Please let us know if you have further questions.