winform 重绘listbox

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication17
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        /// <summary>
        /// 在这个函数之前必须修改listbox的DrawMode属性为OwnerDrawVariable
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
            int index = e.Index;//获取当前要进行绘制的行的序号,从0开始。
            Graphics g = e.Graphics;//获取Graphics对象。
            Rectangle bound = e.Bounds;//获取当前要绘制的行的一个矩形范围。
            string text = listBox1.Items[index].ToString();//获取当前要绘制的行的显示文本。
            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                //如果当前行为选中行。
                //绘制选中时要显示的蓝色边框。
                g.DrawRectangle(Pens.Black, bound.Left, bound.Top, bound.Width - 1, bound.Height - 1);
                Rectangle rect = new Rectangle(bound.Left, bound.Top, bound.Width, bound.Height);
                //绘制选中时要显示的蓝色背景。
                g.FillRectangle(Brushes.Red, rect);
                
                //绘制显示文本。
                TextRenderer.DrawText(g, text, this.Font, rect, Color.Black,
                                      TextFormatFlags.VerticalCenter | TextFormatFlags.Left);
                
            }
            else
            {
             
                Rectangle rect = new Rectangle(bound.Left, (bound.Top ), bound.Width, bound.Height);
                if (index == 0)
                {
                    g.FillRectangle(Brushes.Yellow, rect);
                }
                else if (index == 1)
                {
                    g.FillRectangle(Brushes.YellowGreen, rect);
                }
                else
                {
                    g.FillRectangle(Brushes.SkyBlue, rect);
                }
                TextRenderer.DrawText(g, text, this.Font, rect, Color.Black, TextFormatFlags.VerticalCenter | TextFormatFlags.Left);
                
                               
            }
            
        }

        
    }
}
View Code

转载于:https://www.cnblogs.com/nocoding/p/3369628.html

猜你喜欢

转载自blog.csdn.net/weixin_34277853/article/details/94183413