C# 在自定义组合框中绘制图像

C# 在自定义组合框中绘制图像,c#,image,user-controls,combobox,drawing,C#,Image,User Controls,Combobox,Drawing,对于当前的项目,我需要一个带有颜色名称(字符串)的下拉菜单,旁边有一个颜色的小正方形示例(图像)。因此,我能够设计一个自定义组合框来实现这一点。但是,我有一个问题……当我从列表中选择一个项目时,颜色示例不会显示,只有颜色的名称显示。(见下面的例子) 扩展菜单: 选择项目后: 为了在要开始的字符串旁边绘制颜色,我使用了: // Draws the items into the ColorSelector object protected override void OnDraw

对于当前的项目,我需要一个带有颜色名称(字符串)的下拉菜单,旁边有一个颜色的小正方形示例(图像)。因此,我能够设计一个自定义组合框来实现这一点。但是,我有一个问题……当我从列表中选择一个项目时,颜色示例不会显示,只有颜色的名称显示。(见下面的例子)

扩展菜单:

选择项目后:

为了在要开始的字符串旁边绘制颜色,我使用了:

    // 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);
    }
其中,下拉项包含要绘制的图像和字符串。那么…有人知道我需要重写什么,或者我需要做什么才能让组合框同时绘制图像和字符串,就像它在列表展开时、选中某个项目时所做的那样

非常感谢;
干杯

DropDownStyle
设置为
DropDownList
;默认情况下,
组合框
使用
文本框
显示所选项目。这就是为什么所选项目的显示方式与下拉项目不同。

您还必须以与OnDrawItem方法类似的方式覆盖OnPaint以使其正常工作。

完美!那很好用!非常感谢你。我不知道控件只是在顶部使用一个TextBox对象;这似乎是一个有趣(且不受限制)的实现。