如何实现ComboBox下拉列表显示图片
来源:互联网 发布:deepin linux 安装svn 编辑:程序博客网 时间:2024/05/17 22:50
实现此功能主要通过ComboBox控件的DrawMode属性、DropDownStyle属性以及DrawItem事件和Graphic类的公共属性和方法完成。首先把DrawMode属性设置为OwnerDrawFixed,把DropDownStyle属性设置为DropDownList,然后在控件DrawItem事件下添加图片。主要代码如下:
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.DrawItem+=new DrawItemEventHandler(comboBox1_DrawItem);
comboBox1.Items.Add("123");
comboBox1.Items.Add("456");
comboBox1.Items.Add("789");
for (int i = 0; i < comboBox1.Items.Count+1; i++)
{
imageList1.Images.Add(imageList1.Images[0]);
//必须保证图片数大于等于选项数目
}
}
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
Graphics g = e.Graphics;
Rectangle r = e.Bounds;
Size imageSize = imageList1.Images[0].Size;
if (e.Index >= 0)
{
Font fn = new Font("Tahoma", 10, FontStyle.Bold);
string s = (string)comboBox1.Items[e.Index];
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Near;
if (e.State == (DrawItemState.NoAccelerator | DrawItemState.NoFocusRect))
{
//画条目背景
e.Graphics.FillRectangle(new SolidBrush(Color.Red), r);
//绘制图像
imageList1.Draw(e.Graphics, r.Left, r.Top, e.Index);
//显示字符串
e.Graphics.DrawString(s, fn, new SolidBrush(Color.Black), r.Left + imageSize.Width, r.Top);
//显示取得焦点时的虚线框
e.DrawFocusRectangle();
}
else
{
e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), r);
imageList1.Draw(e.Graphics, r.Left, r.Top, e.Index);
e.Graphics.DrawString(s, fn, new SolidBrush(Color.Black), r.Left + imageSize.Width, r.Top);
e.DrawFocusRectangle();
}
}
}
- 如何实现ComboBox下拉列表显示图片
- C#中使comboBox下拉列表显示图片
- [VB.NET]如何把Combobox的下拉列表显示成Checkbox?
- Winform中如何实现下拉树效果(类似于ComboBox下拉时显示的是树状结构)
- C# 实现ComboBox显示图片
- ComboBox不能显示下拉内容如何解决
- 使用下拉列表显示图片
- 下拉列表:comboBox控件
- ComboBox下拉列表
- 在combobox下拉列表中显示Treeview(转自csdn)
- 如何更改ComboBox下拉列表的文字颜色
- 如何将c#中的Combobox下拉列表设为只读
- 如何设置 ComboBox 下拉列表的高度或间距
- 如何设置 ComboBox 下拉列表的高度或间距 .
- 如何设置 ComboBox 下拉列表的高度或间距
- ComboBox下拉显示
- 在ComboBox下拉框数据中显示图片
- 使用EXT实现ComboBox多列下拉列表
- 无线联网技术
- IEEE802.11i无线局域网安全技术
- 进行计算时,输入的是非数值,其计算过程如何?
- .NET多线程编程(1):多任务和多线程
- 桌面变成home/帐号 目录 --解决方法
- 如何实现ComboBox下拉列表显示图片
- 记录磁盘空间
- 11.15的忏悔
- Django 的安装
- [C/C++]关于C++类成员函数的重载、覆盖、隐藏与virtual关键字
- sprintf函数解析
- C#.NET多线程编程教学(2):Thread类
- C#.NET多线程编程教学(3):线程同步
- java产生随机数的几种方式