2015-06-23 6 views
3

Мне нужно чередовать цвет предметов в моем CheckedListBox, но «alternatingColors» не является собственностью CheckedListBox.Альтернативный цвет фона строк в CheckedListBox?

Как мне изменить цвет предметов?

+0

Применить переменные классы CSS к каждому элементу. – jackncoke

+0

@jackncoke Довольно уверен, что 'CheckedListBox' является элементом управления WinForms. –

+0

Было бы полезно, если бы вы разработали стек, который используете. Это для WPF, Winforms, MVC и т. Д.? – thinklarge

ответ

-1

Я не думаю, что это даже возможно. Вы можете захотеть использовать другой элемент управления для того, что вам нужно. DataGridView может работать для вас лучше.

+1

. Этот ответ был бы лучше, если бы вы включили некоторый пример кода, показывающий, как' DataGridView 'может использоваться для замены' CheckedListBox'. –

+0

Да, это было бы допинг – Alecks

2

Событие OnDrawItem недоступно по умолчанию, но если вы вывели новый элемент управления на основе CheckedListBox, вы можете переопределить базовое событие.

public class MyCheckedListBox : CheckedListBox 
{ 
    private SolidBrush primaryColor = new SolidBrush(Color.White); 
    private SolidBrush alternateColor = new SolidBrush(Color.LightGreen); 

    [Browsable(true)] 
    public Color PrimaryColor 
    { 
     get { return primaryColor.Color; } 
     set { primaryColor.Color = value; } 
    } 

    [Browsable(true)] 
    public Color AlternateColor 
    { 
     get { return alternateColor.Color; } 
     set { alternateColor.Color = value; } 
    } 

    protected override void OnDrawItem(DrawItemEventArgs e) 
    { 
     base.OnDrawItem(e); 

     if (Items.Count <= 0) 
      return; 

     var contentRect = e.Bounds; 
     contentRect.X = 16; 
     e.Graphics.FillRectangle(e.Index%2 == 0 ? primaryColor : alternateColor, contentRect); 
     e.Graphics.DrawString(Convert.ToString(Items[e.Index]), e.Font, Brushes.Black, contentRect); 
    } 
} 

По умолчанию он будет чередоваться между белым и зеленым. Внесите изменения в панель «Свойства» во время разработки или во время выполнения.

enter image description here

+0

Это потрясающе. Итак, как только я создаю класс и добавляю эту форму, как я могу поместить MyCheckedListBox в мою оконную форму? Я не могу просто перетащить его из панели инструментов. – Alecks

+0

Попробуйте перестроить решение. Возможно, придется закрыть/снова открыть решение. Он должен [показать в панели инструментов] (http://i.stack.imgur.com/2VQ3s.png), а затем вы можете просто перетащить его в форму. _ (или перетащите нормальный CheckedListBox и измените пару строк в файле .Designer.cs, чтобы указать на новый элемент управления) _ –

 Смежные вопросы

  • Нет связанных вопросов^_^