Από μια σύντομη διερεύνηση που έκανα, κατέληξα σε ένα καλό και ένα απογοητευτικό συμπέρασμα:
- Αν διατηρήσεις το custom control σου μέσα στην ίδια assembly με τις φόρμες που θα το χρησιμοποιήσουν, τότε είναι απλούστατο να απαριθμήσεις τις διαθέσιμες κλάσεις. Απλά μέσα στην EditValue του UITypeEditor-derived που θα φτιάξεις, θα πάρεις όλες τις κλάσεις με την Assembly.GetExecutingAssembly().GetTypes() και θα επιλέξεις αυτές που κληρονομούν από την Form ή το UserControl.
- Αν βάλεις το custom control σε μια assembly την οποία κάνεις reference αλλού, τότε... έχασες. Η assembly που περιέχει τους τύπους των φορμών δεν είναι καν φορτωμένη (εκτός κι αν περιέχει με τη σειρά της custom ή user controls) για να απαριθμήσεις τις φόρμες που περιέχει. Μπορείς μόνο να αφήσεις το χρήστη σου να γράψει το όνομα της κλάσης με το χέρι, αλλά αυτό δεν είναι και το καλύτερο.
Πιθανώς σκαλίζοντας μέσα στα άδυτα του Visual Studio να μπορεί κανείς να βρει μια λύση, η οποία βέβαια θα είναι VS-specific και δε θα δουλεύει για άλλα περιβάλλοντα design.
Νατάσα Μανουσοπούλου