You can try setting a flag so your code is only hit once per new row. To reset it, you can handle the TableControlCurrentCellMoving.
private bool doOncePerNewRow = true;
private void gridGroupingControl1_TableControlCurrentCellStartEditing(object sender, GridTableControlCancelEventArgs e)
{
Element el = e.TableControl.Table.CurrentElement;
if(doOncePerNewRow && el != null && el is GridAddNewRecord)
{
doOncePerNewRow = false;
e.TableControl.Table.AddNew();
Record r = el as Record;
Console.WriteLine("oncePerNewRow");
}
}
private void gridGroupingControl1_TableControlCurrentCellMoved(object sender, GridTableControlCurrentCellMovedEventArgs e)
{
if(e.TableControl.CurrentCell.MoveToRowIndex != e.TableControl.CurrentCell.MoveFromRowIndex)
doOncePerNewRow = true;
}