题目要求是在c#中的combobox控件的下拉列表中添加图片。我有代码,可是有错误,图片添加部分不
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目要求是在c#中的combobox控件的下拉列表中添加图片。我有代码,可是有错误,图片添加部分不相关的知识,希望对你有一定的参考价值。
题目要求是在c#中的combobox控件的下拉列表中添加图片。我有代码,可是有错误,图片添加部分不会更改。求大神指导。回答详细帮我解决的。还可以加金币。说到做到。我自有办法。
class PicComboBox : System.Windows.Forms.ComboBoxpublic PicComboBox()
//默认值设置
DrawMode = DrawMode.OwnerDrawFixed;
DropDownStyle = ComboBoxStyle.DropDownList;
ItemHeight = 50;
Width = 200;
protected override void OnDrawItem(DrawItemEventArgs e)
if (Items.Count == 0 || e.Index == -1) return;
if ((e.State & DrawItemState.Selected) != 0)
//选中项背景
LinearGradientBrush brush = new LinearGradientBrush(e.Bounds, Color.FromArgb(255, 251, 237), Color.FromArgb(255, 236, 181), LinearGradientMode.Vertical);
//LinearGradientBrush brush = new LinearGradientBrush(e.Bounds, Color.Red , Color.Blue , LinearGradientMode.Vertical);
Rectangle borderRect = new Rectangle(0, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
e.Graphics.FillRectangle(brush, borderRect);
Pen pen = new Pen(Color.FromArgb(229, 195, 101));
e.Graphics.DrawRectangle(pen, borderRect);
else
SolidBrush brush = new SolidBrush(Color.FromArgb(255, 255, 255));
e.Graphics.FillRectangle(brush, e.Bounds);
//绘制图片
PicItem item = (PicItem)Items[e.Index];
Image img = item.Image;
double newwidth = Convert.ToDouble(ItemHeight - 3) * img.Width / img.Height;//保持图片高宽比不变,并先满足高度
Rectangle imgRect = new Rectangle(2, e.Bounds.Y + 2, Convert.ToInt16(newwidth), e.Bounds.Height - 3);
e.Graphics.DrawImage(img, imgRect);
//绘制文本
Rectangle textRect = new Rectangle(imgRect.Right + 2, imgRect.Y, e.Bounds.Width - imgRect.Width, e.Bounds.Height - 3);
String itemText = Items[e.Index].ToString();
StringFormat strFormat = new StringFormat();
strFormat.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(itemText, Font, new SolidBrush(ForeColor), textRect, strFormat);
base.OnDrawItem(e);
/// <summary>
/// 内部类,用于添加图片文本项
/// </summary>
public class PicItem
public PicItem(Image img, string text)
Text = text;
Image = img;
public string Text get; set;
public Image Image get; set;
public override string ToString()
return Text;
这是一个完整的可以添加图片的combox类,用法:
PicComboBox PCB = new PicComboBox();
PCB.Items.Add(new PicComboBox .PicItem(这里是图片,这里是文本)
其中文本可以为空
这是我自己写的、如果觉得外观不好看什么的可以自己修改上面的代码追问
非常感谢您给写的代码,但是我们要求了代码,没办法更改成这个,而且我也试了。有一个错误。
这是我们给定的代码和我出现的错误。
追答图片中是你们给定的代码? 报错是说没有名字为PicturesInComboBox的工程。
追问昂。对对对。
就是这样。
这就是运行结果。
可是我解决不了出现的错误。
追答要不你把你的工程打包发给我(yj9525@163.com)我帮你看看、不然这样我也不知道错在哪里、
参考技术A 直接在后台combobox的item的项定义时指向图片路径追问发错了
怎么破?
追答cboxPictures.Items.Add(图片路径);
追问尝试了。应用不了啊。哭
参考技术B 用imagelist不可以吗追问初学。不会弄啊。我有代码,做好的部分程序能发给你帮忙修改么?
追答有时候不只是有代码就行了,还得调节控件属性和添加控件事件,都在控件属性里面可以设置
追问我有最后的结果图,有代码,但是无法还原过程。程序无法执行,所以……我也不知道要怎么解释了
追答是不是没有添加事件啊
你是用drawitem么
追问明天开电脑给你发下截图吧,这样说我好像给你解释不清楚呢。我只用了bottom和combobox还有就是imagelist
追答好的
追问好。谢谢。
imagelist添加图片不用代码,在右下角属性就可以添加了
追问可是错误提示里的picturesincombobox 提示没有,是怎么回事?
这应该是最后的运行结果
追答Picturecombobox哪里定义的啊
追问我想问这个呢。你能帮我做下么?
追答你找的代码不对
这两个代码主要内容是一样的你放一起看看就做出来了
追问代码是老师给的。只有结果,让我做出过程,能实现最后的运行。而且代码中间也不只有图片的插入,还有字体的设置什么的。
运行有错误。
能不能帮忙给做?加财富值……
追答有的属性是得自己加的
你是不是没有加事件啊
你是不是没有加事件啊
点击combobox然后右边有属性,有一个闪电的图标,单击它,然后找到DrawItem,双击它后面的空白,系统就自动生成了drawitem的事件函数,然后把代码里的函数复制下就OK了
这个东西得写在你电脑里才行,只有代码是没用的
追问试过了。运行错误,没办法执行。
追答什么错误
追问执行以后根本不显示图片。
追答我运行了,没错误啊
你添加图片到imagelist里了吗
追问能不能给做啊!我要疯了!!!成功了财富值加200!!!我都试过了!!根本不行啊!!!
追答你怎么不明白呢,我写好代码给你你也用不了,因为有些东西需要在visual studio里面设置
追问我已经成功了。有人帮忙了。如果你不怕麻烦,我可以另外瞎写一个问题,你回答,采纳给你50财富值。
追答不用了,问题解决了就好
追问好。谢谢善良的你。
C# winform 下拉列表控件(comboBox)
窗体上有两个comboBox 控件 ,comboBox1的选项值改变时,comboBox2的选项值跟着改变
新人入门 求解……谢谢各位大虾们
comboBox2.Text="123".这样当你选择ComboBox1的值的时候ComboBox2的text会跟着改变,如果你想改变ComboBox里面的元素的话就这么写:comboBox2.Items.clear();comboBox2.Items.Add(newone);类似这样就可以了 参考技术A comboBox1增加textchange之类的事件,在事件里 把comboBox1的值赋给comboBox2就可以了追问
如果comboBox1 选择的下标为 0 ,comboBox2 就选择 0
comboBox1 选择 1,comboBox2 就选择1
两个comboBox 里面的值是固定的 根据comboBox1的下标 来确定comboBox2 的下标
怎么写?
comboBox1 .SelectedIndexChange += new Evernt...(myWork)//自动生成一个事件处理函数myWork()里,comboBox2 .SelectIndex = ComBox1.SelectedIndex
参考技术B 在comboBox1的selectedindex_changed事件里面加入类似如下代码:ComboBox2.Selectedindex=comboBox1.Selectedindex;
这样写的话,必须保证两个列表的项一致,否则会报错的。
以上是关于题目要求是在c#中的combobox控件的下拉列表中添加图片。我有代码,可是有错误,图片添加部分不的主要内容,如果未能解决你的问题,请参考以下文章
C# Winform ComboBox列表里加入CheckBox
C#中有种下拉框(combobox),还有中控件,我是在网上下的下拉框(comboboxEdit),我没找到他的下拉属性