Per un progetto corrente, avevo bisogno di un menu a discesa con i nomi dei colori (stringhe) con un piccolo quadrato di esempio del colore accanto (immagine). Quindi, sono stato in grado di progettare un ComboBox personalizzato per ottenere questo risultato. Tuttavia, sto riscontrando un problema ... quando seleziono un elemento dall'elenco, l'esempio di colore non viene visualizzato, solo il nome del colore. (Vedi esempi qui sotto)Disegno di immagini all'interno di un ComboBox personalizzato
menu espanso:
Dopo il punto è scelto:
Al fine di richiamare i colori vicino alle corde per cominciare, ho utilizzato:
// Draws the items into the ColorSelector object
protected override void OnDrawItem(DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
DropDownItem item = (DropDownItem)Items[e.Index];
// Draw the colored 16 x 16 square
e.Graphics.DrawImage(item.Image, e.Bounds.Left, e.Bounds.Top);
// Draw the value (in this case, the color name)
e.Graphics.DrawString(item.Value, e.Font, new
SolidBrush(e.ForeColor), e.Bounds.Left + item.Image.Width, e.Bounds.Top + 2);
base.OnDrawItem(e);
}
Dove DropDownItem conteneva l'immagine e la stringa da disegnare. Quindi ... qualcuno sa che cosa ho bisogno di sovrascrivere o cosa devo fare per far sì che ComboBox disegni sia l'immagine che la stringa, proprio come fa già quando l'elenco è espanso, quando viene selezionato un elemento?
Grazie mille; Cheers!
Perfetto! Funziona magnificamente! Grazie mille. Non avevo idea che il controllo stava semplicemente usando un oggetto TextBox in cima; sembra un'implementazione interessante (e non intuitiva). – JToland