There is no clean way to do this, but this method should do what you need:
For this to work you need .net 3.5 and add using System.Linq...
(_radGridView.SelectedRows.Count <= 1)
var index = _radGridView.Rows.IndexOf(_radGridView.CurrentRow);
var rows =
r => (next ? r.Index > index : r.Index < index) && _radGridView.SelectedRows.Contains(r));
var rowToSelect = next ? rows.FirstOrDefault() : rows.LastOrDefault();
rowToSelect = next
? _radGridView.Rows.Where(r => _radGridView.SelectedRows.Contains(r)).FirstOrDefault()
: _radGridView.Rows.Where(r => _radGridView.SelectedRows.Contains(r)).LastOrDefault();
var selectedRows = _radGridView.SelectedRows.ToArray();
_radGridView.CurrentRow = rowToSelect;
I know it's not that clean, but it will do what you need.
Hope this helps, if you have any other questions or comments, please let me know,
Telerik WinForms MVP