c#中combobox给下拉列表项每项前添加图片

 我来答
百度网友ce7f3ccb4
2015-04-02 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1855万
展开全部
yes,这个必须要重绘!!
private void PrettifyListedBelow_Load(object sender,EventArgs e)
{
beautyComboBox.Items.Add("白菜"); //向ComboBox中添加“白菜”字段
beautyComboBox.Items.Add("萝卜"); //向ComboBox中添加“萝卜”字段
beautyComboBox.Items.Add("土豆"); //向ComboBox中添加“土豆”字段
beautyComboBox.Items.Add("洋葱"); //向ComboBox中添加“洋葱”字段
beautyComboBox.Items.Add("南瓜"); //向ComboBox中添加“南瓜”字段
beautyComboBox.SelectedIndex = 0; //设置ComboBox控件默认选中第一项
}
在绘制ComboBox的特定项和特定区域时触发DrawItem事件。代码如下:
private void beautyComboBox_DrawItem(object sender,DrawItemEventArgs e)
{
Graphics gComboBox = e.Graphics; //声明一个GDI+绘图图面类的对象
Rectangle rComboBox = e.Bounds; //声明一个表示矩形的位置和大小类的对象
Size imageSize = imageList1.ImageSize; //声明一个有序整数对的对象
FontDialog typeFace = new FontDialog(); //定义一个字体类对象
Font Style = typeFace.Font; //定义一个特定的文本格式类对象
if(e.Index >= 0) //当绘制的索引项存在时
{
string temp = (string)beautyComboBox.Items[e.Index]; //获取ComboBox控件索引项下的文本内容
StringFormat stringFormat = new StringFormat(); //定义一个封装文本布局信息类的对象
stringFormat.Alignment = StringAlignment.Near; //设定文本的布局方式
//当绘制项没有键盘加速键和焦点可视化提示时
if(e.State == (DrawItemState.NoAccelerator | DrawItemState.NoFocusRect))
{
//用指定的颜色填充自定义矩形的内部
e.Graphics.FillRectangle(new SolidBrush(Color.Red),rComboBox);
imageList1.Draw(e.Graphics,rComboBox.Left,rComboBox.Top,e.Index); //在指定位置绘制指定索引的图片
e.Graphics.DrawString(temp,Style,new SolidBrush(Color.Black),rComboBox.Left + imageSize.Width,rComboBox.Top); //在指定的位置并且用指定的Font对象绘制指定的文本字符串
e.DrawFocusRectangle(); //在指定的边界范围内绘制聚焦框
}
else //当绘制项有键盘加速键或者焦点可视化提示时
{
//用指定的颜色填充自定义矩形的内部
e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue),rComboBox);
imageList1.Draw(e.Graphics,rComboBox.Left,rComboBox.Top,e.Index); //在指定位置绘制指定索引的图片
e.Graphics.DrawString(temp,Style,new SolidBrush(Color.Black),rComboBox.Left + imageSize.Width,rComboBox.Top); //在指定的位置并且用指定的Font对象绘制指定的文本字符串
e.DrawFocusRectangle(); //在指定的边界范围内绘制聚焦框
}
}
}
创作者zUzVB1Sl31
2015-04-07 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5973

向TA提问 私信TA
展开全部
其实最简单的方法就是自己做个comboBox,你建立一个自定义控件,下面拖个ListView,点下拉箭头窗体向下扩展ListView显示你的数据和图片这不就行了。还重写ComboBox,还重写VS.NET开发环境哦!!!!不要给自己找麻烦事,编程才会越来越轻松
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FoolRabbit编程
2015-03-25 · 知道合伙人数码行家
FoolRabbit编程
知道合伙人数码行家
采纳数:619 获赞数:3804
毕业于苏州大学,4年编程经验,对WPF有研究。

向TA提问 私信TA
展开全部
应该需要重绘combobox
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式