You can derive the grid and override ProcessCmdKey to catch these keys and add a row.
public class MyGridDataBoundGrid : GridDataBoundGrid
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if((0 != (keyData & Keys.Tab)) || (0 != (keyData & Keys.F9)))
{
this.Binder.AddNew();
return true; //ignore the key
}
return base.ProcessCmdKey (ref msg, keyData);
}
}