Come posso mostrare valori simili nei campi personalizzati in una griglia di proprietà?
-
03-07-2019 - |
Domanda
Ho una griglia di proprietà che mi aiuta a gestire tutti i controlli in un modulo. Questi controlli sono per gente di tipo designer, quindi non sono molto preoccupato per l'interfaccia utente ... fino a quando qualcuno seleziona più oggetti.
Ho un UITypeEditor per " BottomDiameter " proprietà su questi oggetti comuni. Tiene traccia delle unità (metri contro piedi) e fa al volo alcune cose carine. Tuttavia, quando qualcuno seleziona due o tre oggetti comuni, BottomDiameter è vuoto, anche se restituisce la stessa stringa di testo.
Il motivo (penso) che sia vuoto è che in realtà sono tre oggetti objDiameter separati. Come posso dire alla griglia delle proprietà di comportarsi come tutte le altre proprietà e mostrare il valore se valuta la stessa stringa ???
AGGIORNAMENTO: ad esempio, "Ancoraggio" la proprietà ha un output di testo di " in alto, a destra " ma quando lo tiri giù è un oggetto. Tuttavia, quando selezioni cinque oggetti nel tuo modulo che hanno tutti la stessa impostazione di ancoraggio, puoi comunque vedere la stringa "In alto, A destra". nella griglia delle proprietà.
Soluzione
Se BottomDiameter è una classe e non una semplice primitiva, devi sovrascrivere il metodo Equals in questa classe.
Altri suggerimenti
Nel TypeConvertor del tipo di dati che è attribuito alla proprietà BottomDiameter, potresti voler creare un vistor come la classe chiamata say, BottomDiameterVistor che richiederebbe un array o un elenco dei BottomDiameter selezionati. Sostituisci la proprietà to string su BottomDiameterVistor per restituire il valore di testo aggregato per la proprietà.