Цвет элементов listbox

WonderMNS

Нужно выделить определенные элементы в listbox цветом. Не по индексу. Как?
3 ответа

WonderMNS

        private void Form1_Load(object sender, EventArgs e) {
            
 
            object a = new object();
            object b = new object();
            object c = new object();
 
            listBox1.Items.Add(a);
            listBox1.Items.Add(b);
            listBox1.Items.Add(c);
 
            listBox1.ColoredObjects.Add(b);
 
            listBox1.Refresh();
        }
 
        public class ColorListBox : ListBox {
 
            public ColorListBox():base() {
                ColoredObjects = new List<object>();
            }
 
            protected override void OnDrawItem(DrawItemEventArgs e) {
                if (ColoredObjects.Contains(this.Items[e.Index])) {
                    e.DrawBackground();
                    e.Graphics.FillRectangle(new SolidBrush(Color.Silver), e.Bounds);
                }
 
                base.OnDrawItem(e);
            }
 
            public List<object> ColoredObjects { get; private set; }
        }
но вообще надо пользоваться ListView


WonderMNS

но вообще надо пользоваться ListView
а не подскажите как раскрасить элементы в ListView которые удовлетворяют определенному условию?


WonderMNS

Практически все то же самое, только в методе OnDrawItem выполняй проверку условия Например так:
                if ((Product)(this.Items[e.Index]).Price > 10) 
                {
                    e.DrawBackground();
                    e.Graphics.FillRectangle(new SolidBrush(Color.Silver), e.Bounds);
                }