.NET 自定义图片下拉框组件ImageComboBox


Demo

ImageComboBox 下拉效果

.NET 自定义图片下拉框组件ImageComboBox

选择箭头样式1效果:

.NET 自定义图片下拉框组件ImageComboBox

 

使用方法

 

C# 全选
            //初始化图片下拉组件
            ucImageComboBox1.ItemHeight = 21; //设置行高
            ucImageComboBox1.Items.Clear();
            ucImageComboBox1.Items.Add(new ComboBoxItemEx("箭头1", 0));
            ucImageComboBox1.Items.Add(new ComboBoxItemEx("箭头2", 1));

 

ucImageComboBox 组件

 

C# 全选
    /// <summary>
    /// 图片下拉组件(www.csframework.com)
    /// </summary>
    public class ucImageComboBox : ComboBox
    {
        const int ICON_MARGIN_TOP = 2;
        const int TEXT_MARGIN_TOP = 3;

        private ImageList imagelist;

        /// <summary>
        /// 图片列表
        /// </summary>
        public ImageList ImageList
        {
            get
            {
                return this.imagelist;
            }
            set
            {
                this.imagelist = value;
            }
        }

        public ucImageComboBox()
        {
            base.DrawMode = DrawMode.OwnerDrawFixed;
        }

        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            e.DrawBackground();
            e.DrawFocusRectangle();

            if (this.imagelist != null)
            {
                Size imageSize = this.imagelist.ImageSize;
                Rectangle bounds = e.Bounds;
                try
                {
                    ComboBoxItemEx item = (ComboBoxItemEx)base.Items[e.Index];
                    if (item.ImageIndex != -1)
                    {
                        this.imagelist.Draw(e.Graphics, bounds.Left, bounds.Top - ICON_MARGIN_TOP, item.ImageIndex);
                        e.Graphics.DrawString(item.Text, e.Font, new SolidBrush(e.ForeColor), (float)(bounds.Left + imageSize.Width), (float)bounds.Top + TEXT_MARGIN_TOP);
                    }
                    else
                    {
                        e.Graphics.DrawString(item.Text, e.Font, new SolidBrush(e.ForeColor), (float)bounds.Left, (float)bounds.Top + TEXT_MARGIN_TOP);
                    }
                }
                catch (Exception ex)
                {
                    if (e.Index != -1)
                    {
                        e.Graphics.DrawString(base.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), (float)bounds.Left, (float)bounds.Top);
                    }
                    else
                    {
                        e.Graphics.DrawString(this.Text, e.Font, new SolidBrush(e.ForeColor), (float)bounds.Left, (float)bounds.Top);
                    }
                }
            }

            base.OnDrawItem(e);
        }
    }

 

C# 全选
    /// <summary>
    /// 列表项目对象模型
    /// </summary>
    public class ComboBoxItemEx
    {
        /// <summary>
        /// 文本内容
        /// </summary>
        public string Text { get; set; }

        /// <summary>
        /// 图片序号
        /// </summary>
        public int ImageIndex { get; set; }

        public ComboBoxItemEx(string text, int imageIndex)
        {
            this.Text = text;
            this.ImageIndex = imageIndex;
        }
    }

 

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
评论列表

发表评论

评论内容
昵称:
关联文章

.NET 定义图片组件ImageComboBox
【原创】C# Dev用户定义组件,自动表格过滤数据组件ucMyLookUpEdit
【原创】C# Winform Dev自动筛选数据PopupContainerEdit组件
C# DevExpress教学 GridLookUpEdit组件表格组件使用
C#.Net定义控件 - GridPopupContainerEdit
DevExpress表格打印预览及定义页眉页脚并绘制图片(C# Winform)
C#.Net定义控件 - GridPopupContainerLookup
FastReport.NET 2023 用户定义报表配置详解
.Net 高性能分表分库组件 (类似ShardingSphere原理)
[转帖]FreeTextBox添加定义按钮
Winform开发框架代码生成器 - 支持生成输入组件适应窗体(LayoutControl)
C# Combox组件动态数据
C#源码下载 - 定义消息提示工具类下载(Msg.cs)
GridControl表格定义按钮设置按钮图片
DevExpress TreeList树组件定义TreeListNode的Tooltip的方法(自动消息提示)
C#.Net用户定义控件制作教程
C#.Net开发继承UITypeEditor接口的定义属性编辑器
C#.Net定义控件设置图标ToolboxBitmap的用法
标签:C#.Net组件开发 - 定义属性编辑器持久化对象的属性
C#.Net组件开发(高级篇) - 定义CollectionEditor编辑器