I think you will have to derive the grid and override virtual methods to avoid processing the space.
Here is a first try at this.
public class MyGridControl : GridControl
{
protected override bool ProcessDialogKey(Keys key)
{
if ( (key & Keys.KeyCode) == Keys.Space && Control.ModifierKeys == Keys.Shift )
{
Selections.Clear();
Selections.SelectRange(GridRangeInfo.Row(this.CurrentCell.RowIndex), true);
return true;
}
else
return base.ProcessDialogKey (key);
}
protected override void OnCurrentCellMoved(GridCurrentCellMovedEventArgs e)
{
if(this.CurrentCell.MoveFromRowIndex != this.CurrentCell.MoveToRowIndex)
{
GridRangeInfo oldRange = GridRangeInfo.Row(this.CurrentCell.MoveFromRowIndex);
if(Selections.Ranges.ActiveRange.Equals(oldRange))
{
Selections.Clear();
Selections.SelectRange(GridRangeInfo.Row(this.CurrentCell.MoveToRowIndex), true);
}
}
base.OnCurrentCellMoved (e);
}
}