Il testo in corsivo in un PropertyGrid
-
09-09-2019 - |
Domanda
Io sto usando un PropertyGrid per dimostrare le proprietà personalizzate che vengono esposti attraverso l'implementazione di ICustomTypeDescriptor.
I miei oggetti sono installati in una struttura ad albero e valori per ciascuna proprietà sono o impostata in ogni oggetto o ereditato da oggetti padre. Nella PropertyGrid voglio mostrare visivamente all'utente quali valori sono impostati nell'oggetto selezionato, e che vengono ereditate da oggetti principali.
In questo momento mi sto mostrando ogni proprietà esso due categorie. Un set mostra ciò che il valore è impostato nell'oggetto reale, con un campo vuoto se non impostato. L'altra serie mostra i valori delle proprietà assegnate all'oggetto che si sia impostata nell'oggetto, o ereditato se non impostato nell'oggetto.
Vorrei combinare questi due gruppi in un unico acquisto che mostra le proprietà impostate nel testo normale, e valori ereditati in corsivo. Tuttavia, non sembra essere un modo per farlo attraverso ICustomTypeDescriptor.GetProperties (). E non ho un facile accesso alle proprietà del PropertyGrid dal momento che vengono creati durante l'esecuzione del programma.
Soluzione
Non si può fare il corsivo - ma si può fare in grassetto; il comportamento grassetto è determinato dalla PropertyDescriptor
del ShouldSerializeValue
; si può avvolgere PropertyDescriptor
s attraverso vari trucchi System.ComponentModel
(ICustomTypeDescriptor
, TypeConverter
o TypeDescriptionProvider
) e fornire il proprio PropertyDescriptor
.
In alternativa, ci sono griglie simili con più opzioni, come ad esempio da VisualHint -. vedere "personalizzazione proprietà" a quella pagina