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对象;这似乎是一个有趣(且不受限制)的实现。