This is by design. Here the code.
public bool RaiseCellButtonClicked(int rowIndex, int colIndex, int index, GridCellButton button)
{
TraceUtil.TraceCurrentMethodInfoIf(Switches.CurrentCell.TraceVerbose, PaneDesc, rowIndex, colIndex, index, button);
GridCellButtonClickedEventArgs e = new GridCellButtonClickedEventArgs(rowIndex, colIndex, index, button);
try
{
OnCellButtonClicked(e);
}
catch (Exception ex)
{
TraceUtil.TraceExceptionCatched(ex);
if (!ExceptionManager.RaiseExceptionCatched(this, ex))
throw ex;
e.Cancel = true;
}
return !e.Cancel;
}
This code also shows how you can make the grid rethrow the exception. It uses the ExceptionManager class in Shared. Syncfusion.Windows.Forms.ExceptionManager that has static members that you can use to control how the grid handles exceptions. For example, to suspend the grid''''s error handling, try
Syncfusion.Windows.Forms.ExceptionManager.SuspendCatchExceptions = true;
You can also hook an event (Syncfusion.Windows.Forms.ExceptionManager.ExceptionCatched) to get any exception thrown, and handle them yourself.