Το φοβόμουνα ότι αυτό θέλεις

Το PropertyGrid ταξινομεί τα properties με δύο τρόπους:
- Όταν δείχνει τα properties μόνο ενός αντικειμένου (SelectedObject), τότε τα ταξινομεί κατά αλφαβητική σειρά του Name που δίνει ο PropertyDescriptor.
- Όταν δείχνει "συγχωνευμένα" τα properties πολλών αντικειμένων (SelectedObjects) τότε χρησιμοποιεί το PropertyDescriptor.DisplayName για να τα ταξινομήσει.
Προφανώς ο σκοπός αυτών των δύο διαφορετικών προσεγγίσεων είναι να σπάνε τα νεύρα των ταλαίπωρων developers και δεν έχει άλλη πρακτική λειτουργικότητα.
Αυτό που εμφανίζεται σαν όνομα του property είναι το PropertyInfo.Name.
Άρα, θέλεις:
- Να φτιάξεις δικό σου derived class του PropertyDescriptor που κάνει override το Name και το DisplayName και τα επιστρέφει με τέτοιο τρόπο ώστε να ταξινομούνται όπως θέλεις. Σε δικό μου ανάλογο πρόβλημα (γιατί προφανώς το έχω φάει στα μούτρα το ζήτημα) έβαζα μπροστά από το κείμενο έναν αριθμό π.χ. "60 - Συνολικές εισφορές" κλπ. Όμως στο συγκεκριμένο project αυτά τα νούμερα είχαν νόημα και δεν ήταν απλά ένας α/α.
- Να υλοποιήσεις στην κλάση σου το interface System.ComponentModel.ICustomTypeDescriptor.
- Να καλέσεις παντού την υλοποίηση της base class, εκτός από τις GetProperties(...), στις οποίες πρέπει να αρχικοποιείς ένα collection με τα MyPropertyDescriptor με τα properties σου (εκμεταλλευόμενος ίσως την base class).
HTH
Νατάσα Μανουσοπούλου