Do bieżącego projektu potrzebowałem menu rozwijanego z nazwami kolorów (ciągi) z małym przykładowym kwadratem koloru obok niego (zdjęcie). Tak więc udało mi się zaprojektować niestandardowy ComboBox, aby to osiągnąć. Mam jednak jeden problem .... kiedy wybieram element z listy, kolor nie pokazuje się, tylko nazwa koloru. (Patrz przykłady poniżej)Rysowanie obrazów wewnątrz niestandardowego ComboBox
rozwiniętym menu:
Po pozycji jest najważniejsze:
W celu wyciągnięcia kolory obok strun na początek, ja używany:
// 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);
}
Gdzie DropDownItem zawierał obraz i ciąg do narysowania. Więc ... Czy ktoś wie, co muszę przesłonić lub co muszę zrobić, aby uzyskać ComboBox narysować obraz i ciąg zarówno tak, jak to już robi, gdy lista jest rozwinięta, gdy element jest wybrany?
Wielkie dzięki; Pozdrawiam!
Idealny! Działa to pięknie! Dziękuję bardzo. Nie miałem pojęcia, że kontrola po prostu używała obiektu TextBox na wierzchu; to wydaje się być ciekawą (i nieprzyzwoitą) implementacją. – JToland