CheckedListBox
Winform에 있는 CheckedListBox 라는 컨트롤이 있다.
이 컨트롤을 사용하면서 큰 불편함을 한가지 느꼈다.
바로 각 아이템 별로 글자색, 배경색, 폰트 등을 바꿀 수가 없었다.
이 문제점을 해결할 수 있는 방법을 찾아내었다.
일단 유저 커스텀 컨트롤을 추가한다.
{:}
그러고 난 뒤 커스텀 컨트롤에 CheckedListBox를 상속한다. 그리고 아래와 같은 코드를 추가한다.
protected override void OnDrawItem(DrawItemEventArgs e)
{
DrawItemEventArgs e2 =
new DrawItemEventArgs(
e.Graphics,
e.Font,
new Rectangle(e.Bounds.Location, e.Bounds.Size),
e.Index,
e.State,
this.CheckedIndices.Contains(e.Index) ? Color.Red : Color.Black,
e.BackColor
);
base.OnDrawItem(e2);
}
위와 같은 코드를 삽입 한 뒤 폼에 추가시켜서 사용한다.
체크 표시를 하면 빨간색으로 글자가 바뀌는 것을 볼 수 있다.

원한다면 저 소스코드를 수정하여 배경색, 폰트도 바꿀 수 있다.