Here is a try at this. It derives the GridControl and overrides OnKeyDown to scroll things there if there is an up/down arrow key is pressed. There is a little flicker on the row header, but the whole row does not seem to flicker.
public class MyGridControl : GridControl
{
protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Down || e.KeyCode == Keys.Up)
{
int inc = 0;
if(e.KeyCode == Keys.Down && this.TopRowIndex > 1)
{
inc = -1;
}
else if(e.KeyCode == Keys.Up && this.ViewLayout.LastVisibleRow < this.RowCount)
{
inc = 1;
}
if(inc != 0)
{
this.BeginUpdate();
int cr = this.CurrentCell.RowIndex - this.TopRowIndex;
int col = this.CurrentCell.ColIndex;
this.CurrentCell.Deactivate(false);
this.Selections.Clear();
this.TopRowIndex += inc;
this.Selections.Add(GridRangeInfo.Row(this.TopRowIndex + cr));
this.EndUpdate();
//do one or the other of these lines
this.CurrentCell.Activate(this.TopRowIndex + cr, 0);
//this.CurrentCell.Activate(this.TopRowIndex + cr, col);
}
return;
}
base.OnKeyDown(e);
}
}