Sorting in .NET is not 'stable' for the framework's implementation of sort, so what you're probably seeing is the effects of sort not being stable sort. Are you using categorized values? If so, you might be best to use PropertyGridPropertyItem.Tag to specify an 'absolute' sort order and then change the sort collection to contain Category & Tag as the sort descriptions instead of Category & Name.
In case "stable sort" doesn't mean anything to you, what it basically means is this:
if you have a list with
Category Name
X X_first
X X_second
X X_third
Y Y_first
Y Y_second
and you sort only by Category, there is not guarantee what order the items within categories X and Y will come, only that all X's will appear before all Y's do.
The .NET framework's sort algorithm is like this (makes no guarantees about preserving the order), whereas a stable sort makes the guarantee that items are left in the same order they started in, if they are equal in the key columns.
Kelly Leahy
Software Architect
Milliman, USA