2012-12-02 2 views
3

Windows Forms의 listbox에서 무언가를 선택할 때 얻을 수있는 추악한 푸른 색을 어떻게 변경합니까? 내가 찾은 모든 솔루션은 전체 컨트롤을 다시 생성하거나 WPF를 사용하는 것만을 포함합니다. WinForms 내에서 그것을 할 수있는 방법이 있습니까?WinForms에서 ListBox의 "selected"색을 변경 하시겠습니까?

ListView1.UseCustomSelectionColors = true; 
ListView1.HighlightBackgroundColor = Color.Red; // for example :) 
ListView1.UnfocusedHighlightBackgroundColor = Color.Red; 

의 ListView :

myitem.BackColor = Color.Red; 

답변

10

이 목록 상자의 DrawMode을 설정 OwnerDrawFixed 및 가입

+1

+1. 재미있는 접근법. 웬일인지 나는 예상되는 직사각형의 바닥쪽으로 약간 옮겨 졌던 항목을보고있다. 내 맞춤 dpi가 125 %로 설정 될 수 있습니까? – Neolisk

+1

Neolisk와 같은 문제가 있습니다. +1 tho –

+0

"listBox"를 (ListBox) 보낸 사람으로 변경하여 여러 목록 상자에 사용할 수 있습니다. 즉이 메서드의 보낸 사람은 항목을 그릴 필요가있는 목록 상자입니다. – JohnT

4

는 편집하기 전에 ..

ObjectListView (그리스트 뷰가 아닌 목록 상자에 대한 요청) DrawItem 이벤트 :

private void listBox_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    e.DrawBackground(); 
    Graphics g = e.Graphics; 
    Brush brush = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ? 
        Brushes.Red : new SolidBrush(e.BackColor); 
    g.FillRectangle(brush, e.Bounds); 
    e.Graphics.DrawString(listBox.Items[e.Index].ToString(), e.Font, 
      new SolidBrush(e.ForeColor), e.Bounds, StringFormat.GenericDefault); 
    e.DrawFocusRectangle();    
} 

이벤트 인수의 속성을 확인하여 e.State 속성을 확인할 수 있습니다. 상태가 Selected 인 경우 원하는 브러시 (예 : 빨간색)를 사용하여 항목 행을 채 웁니다.

+0

예 Neolis, 내 대답을 편집했습니다. – Obama

+0

ListView 항목의 BackColor를 설정해도 OP에서 묻는 선택 색상 문제는 해결되지 않습니다. – Neolisk

+0

정말 미안 해요,리스트 박스가 아니고리스트 뷰를 만났습니다. – Oztaco