In addition to cancelling the new selection, you also have to cancel the de-selection of the old range which you use e.Range.IsEmpty to test for.
private void gridControl1_SelectionChanging(object sender, GridSelectionChangingEventArgs e)
{
if(e.Range.IsEmpty && e.ClickRange.IntersectsWith(GridRangeInfo.Row(2)))
e.Cancel = true;
else if(e.Range.IntersectsWith(GridRangeInfo.Row(2)))
e.Cancel = true;
}