Currently, there is no property that controls this, but you can implement through a derived grid and a couple of overrides. Below is a sample.
public class MyGridControl : GridControl
{
//needed to handle all tabs except active border edit cell
protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
{
if((e.KeyData & Keys.KeyCode) == Keys.Tab && MoveToNextCell())
return;
base.OnKeyDown(e);
}
//this is needed to handle tab key on active cell at a border...
protected override bool ProcessKeyPreview(ref System.Windows.Forms.Message m)
{
if((Keys)((int)m.WParam) == Keys.Tab)
{
if(MoveToNextCell())
return true;
}
return base.ProcessKeyPreview(ref m);
}
private bool MoveToNextCell()
{
bool b = false;
GridDirectionType direction = ((Control.ModifierKeys & Keys.Shift) == 0) ? GridDirectionType.Right: GridDirectionType.Left ;
int row = this.CurrentCell.RowIndex;
int col = this.CurrentCell.ColIndex;
if(direction == GridDirectionType.Right)
col++;
else
col--;
if(!this.CurrentCell.QueryNextEnabledCell(direction, ref row, ref col))
{
if(direction == GridDirectionType.Right && this.ColCount == this.CurrentCell.ColIndex
&& this.RowCount > this.CurrentCell.RowIndex)
{
row = this.CurrentCell.RowIndex + 1;
col = 1;
if(this.CurrentCell.QueryNextEnabledCell(direction, ref row, ref col))
{
this.CurrentCell.MoveTo(row, col,
GridSetCurrentCellOptions.ScrollInView);
b = true;
}
}
else if(direction == GridDirectionType.Left && 1 == this.CurrentCell.ColIndex
&& this.CurrentCell.RowIndex > 1)
{
row = this.CurrentCell.RowIndex - 1;
col = this.ColCount;
if(this.CurrentCell.QueryNextEnabledCell(direction, ref row, ref col))
{
this.CurrentCell.MoveTo(row, col,
GridSetCurrentCellOptions.ScrollInView);
b = true;
}
}
}
return b;
}
}