You can handle the currencymanager positionchanged event.
CurrencyManager cm = (CurrencyManager) this.gridDataBoundGrid1.BindingContext[this.gridDataBoundGrid1.DataSource, this.gridDataBoundGrid1.DataMember];
cm.PositionChanged += new EventHandler(cm_PositionChanged);
In the handler, if the position change is from outside the grid, move the currentcell.
private void cm_PositionChanged(object sender, EventArgs e)
{
if(!this.gridDataBoundGrid1.CurrentCell.IsInMoveTo)
{
CurrencyManager cm = sender as CurrencyManager;
if(cm != null)
{
int row = this.gridDataBoundGrid1.Binder.PositionToRowIndex(cm.Position);
this.gridDataBoundGrid1.CurrentCell.MoveTo(row, this.gridDataBoundGrid1.CurrentCell.ColIndex);
}
}
}