1) One way you can do this is to listen for the parent grid's cellclick event in the embeddedgrid, and then move currentcell in your handler.
//in the embedded grid's constructor
parent.CellClick += new GridCellClickEventHandler(ClickedOnParentCell);
//the handler
private void ClickedOnParentCell(object sender, GridCellClickEventArgs e)
{
Point pt = this.PointToClient(Control.MousePosition);
if(this.GridBounds.Contains(pt))
{
int row, col;
if(this.PointToRowCol(pt, out row, out col, 1))
{
this.CurrentCell.MoveTo(row, col, GridSetCurrentCellOptions.SetFocus);
}
}
}
2) In the embedded grid'c constructor, set its WrapCellBehavior property, and hook the WrapNextControlInForm event and handle the moving the the event handler.
//in the constructor
this.Model.Options.WrapCellBehavior = GridWrapCellBehavior.NextControlInForm;
this.WrapCellNextControlInForm += new GridWrapCellNextControlInFormEventHandler(TabToNextParentCell);
//handler
private void TabToNextParentCell(object sender, GridWrapCellNextControlInFormEventArgs e)
{
GridControl grid = (GridControl) this.Parent;
grid.Focus();
if(e.Forward)
grid.CurrentCell.MoveRight(1);
else
grid.CurrentCell.MoveLeft(1);
e.Cancel = true;
}