Ho ricavato una classe da ComboBox, ne ho fatto una lista di proprietari disegnata (stile DrawMode.OwnerDrawVariable), e sovrascrivendo OnMeasureItem e OnDrawItem aggiungo elementi speciali all'elenco a discesa (separatori, ad esempio) che sono di dimensioni inferiori/superiori rispetto agli oggetti normali che abitano il controllo.Il proprietario di dimensioni variabili disegna ComboBox; elencare non dimensionare correttamente
Ora, il problema che sto riscontrando e che non riesco a risolvere efficacemente è il dimensionamento dell'elenco a discesa: c'è un brutto spazio vuoto alla fine dell'elenco quando scende. Pensavo di averlo risolto impostando la proprietà DropDownHeight del ComboBox sulla somma di tutti gli elementi, ma questo non sembra funzionare all'ora. A volte, su un numero casuale di elementi, ritorna lo spazio bianco vuoto di rovina. Questo è un problema insolito, ma si spera che sia comune e facilmente risolvibile.
Come è possibile ottenere l'elenco a discesa del ComboBox per ridimensionare esattamente la dimensione occupata dagli elementi al suo interno?
Questo errore si estende un po 'più in profondità. Il valore predefinito di DropDownHeight si basa sulla dimensione del carattere degli oggetti nella casella combinata. Qualsiasi alterazione dell'altezza di un singolo elemento che non è basata su una modifica della dimensione del carattere causerà un problema con la proprietà DropDownHeight. – Stewbob
No, la dimensione predefinita è hardcoded in una costante, avere un look-see nella Reference Source. È denominato "DefaultDropDownHeight". Se la tua teoria è corretta, dovresti vederlo molto più frequentemente. Soprattutto dal momento che implementate OnMeasureItem, l'altezza dell'oggetto sarà sempre non standard. Sono costretto a indovinare qui, la tua domanda non ha alcun indizio su cosa potrebbe far scattare l'apparizione del divario. –
@nobugz: Sì, hai ragione. Ho digitato più velocemente di quanto pensassi. L'altezza dell'articolo si basa sulla dimensione del carattere.Che, in alcuni casi, è ciò che viene utilizzato per determinare il valore massimo di DropDownHeight. – Stewbob