winform Combox重绘

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace GDIDemo1

{

    public partial class frmDrawItem : Form

    {

        public frmDrawItem()

        {

            InitializeComponent();

            //指定绘制模式,这项必须指定为,OwnerDrawFixed,OwnerDrawVariable

            //Normal 由操作系统绘制,并且元素大小都相等。

            //OwnerDrawFixed 手动绘制的,并且元素大小都相等。

            //OwnerDrawVariable 手动绘制,元素大小可能不相等。

            comboBox2.DrawMode = DrawMode.OwnerDrawFixed;

        }

        private void frmDrawItem_Load(object sender, EventArgs e)

        {

            this.comboBox2.Items.Add("ss");

            this.comboBox2.Items.Add("ss1");

            this.comboBox2.SelectedIndex = 1;

            this.comboBox1.Items.Add("ss");

            this.comboBox1.Items.Add("ss1");

        }

        private void comboBox2_DrawItem(object sender, DrawItemEventArgs e)

        {

            //获取要在其上绘制项的图形表面

            Graphics g = e.Graphics;

            //获取表示所绘制项的边界的矩形

            System.Drawing.Rectangle rect = e.Bounds;

            //定义要绘制到控件中的图标图像

            Image ico = Image.FromFile(@"C:\Users\qpj\Desktop\1.png");

            //定义字体对象

            System.Drawing.Font font = new System.Drawing.Font(new FontFamily("宋体"), 12);

            if (e.Index >= 0)

            {

                //获得当前Item的文本

                string tempString = comboBox2.Items[e.Index].ToString();

                //如果当前项是没有状态的普通项

                if (e.State == DrawItemState.None)

                {

                    //在当前项图形表面上划一个矩形

                    g.FillRectangle(new SolidBrush(Color.FromArgb(200, 230, 255)), rect);

                    //在当前项图形表面上划上图标

                    g.DrawImage(ico, new Point(rect.Left, rect.Top));

                    //在当前项图形表面上划上当前Item的文本

                    g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top);

                    //将绘制聚焦框

                    e.DrawFocusRectangle();

                }

                else

                {

                    e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), rect);

                    g.DrawImage(ico, new Point(rect.Left, rect.Top));

                    g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top);

                    e.DrawFocusRectangle();

                }

            }

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,486评论 0 10
  • Data Visualization with D3 D3: SVG中的jQurey 1. Add Documen...
    王策北阅读 793评论 0 2
  • 许许多多的相遇,然后变成路人,错过。也许心灵上的相遇会使人更加难以忘怀。 ...
    李文筿阅读 718评论 0 3
  • 母亲身负十月之重,经受一朝分娩之苦, 带我来到人世间! 任由汗水打湿衣衫,泥巴沾满裤管鞋袜, 换我能健康长大! 转...
    泓音阅读 286评论 0 0
  • 记得在我高中的时候就看过一篇报道,说的是呼吸疾病的影响,当时报道的是70%的人群都在受着呼吸疾病的困扰,最为严重的...
    聚仁养生利宏阅读 355评论 0 0