2011-04-07 6 views
1

여기에 혼란스러워합니다. 이 listview의 다양한 셀을 양식화하려고하지만 결과가 이상합니다.일관성없는 listview 하위 속성

lvi = new ListViewItem(); 
lvi.Text = row["Size"].ToString(); 
lvi.SubItems.Add(row["Item"].ToString()); 
lvi.SubItems[0].Font = new System.Drawing.Font(lvi.Font, FontStyle.Underline); 
lvi.SubItems[1].ForeColor = Color.Blue; 
listAvailableSizes.Items.Add(lvi); 

따라서, 이론적으로는 처음으로 하위 항목이 강조되어야하고, 내 두 번째는 파란색이어야한다 (이 그냥 임의의 스타일입니다) : 다음과 같이있는 ListViewItem을 만들 수있는 내 코드입니다. 그리고 직접 실행 창은이 경우되어야한다고 확인이에 따르면

listAvailableSizes.Items[0].SubItems[0].ForeColor 
    "{Name=WindowText, ARGB=(255, 0, 0, 0)}" 
     A: 255 
     B: 0 
     G: 0 
     IsEmpty: false 
     IsKnownColor: true 
     IsNamedColor: true 
     IsSystemColor: true 
     Name: "WindowText" 
     R: 0 
    listAvailableSizes.Items[0].SubItems[1].ForeColor 
    "{Name=Blue, ARGB=(255, 0, 0, 255)}" 
     A: 255 
     B: 255 
     G: 0 
     IsEmpty: false 
     IsKnownColor: true 
     IsNamedColor: true 
     IsSystemColor: false 
     Name: "Blue" 
     R: 0 
    listAvailableSizes.Items[0].SubItems[0].Font.Underline 
    true 
    listAvailableSizes.Items[0].SubItems[1].Font.Underline 
    false 

, 하위 항목 위치 0 일반 컬러 텍스트와 밑줄을 가지고, 위치 1은 파란색 텍스트없이 밑줄을, 그러나,이 그것을 표시하는 방법되고있다 :

listview

당신이 모두 밑줄이없고, 어느 쪽도되어 볼 수 있듯이 파란색입니다. 내가 놓친 게 있니?

답변

2

일반적으로 모든 하위 항목은 항목과 동일한 스타일 (글꼴 및 색상)을 사용합니다. (참고로 SubItem[0]ListViewItem과 동일합니다.)

것은이 작업을 수행, 하위 항목은 서로 다른 특성을 가질 수 있도록하려면 사용하는 어떤 글꼴/색상을 결정할 때

listAvailableSizes.Items[0].UseItemStyleForSubItems = false; 

을이이 false로 설정되면, ListView 실제로 하위 항목의 값을 볼 것이다.

UseItemStyleForSubItemstrue 인 경우 하위 항목에 스타일을 설정할 수 있으며 저장되지 않습니다. 단지 사용되지 않을 것입니다.

+0

굉장하고, Boo가 언급 한대로 사용자 지정 드로잉을하기 시작했습니다. 시간을 보내고 싶지 않았습니다. – Nick

0

하위 항목은 표준 .NET 목록보기 구현을 사용하여 색칠을 지원하지 않습니다. 당신은 당신의 listview를 그리는 사용자 정의를 들여다 볼 필요가 있습니다.

+0

내 질문에 대한 답이 확실하지 않습니다. 하위 항목 위치 0의 포어 색상을 변경하면 두 항목이 모두 파란색으로 바뀝니다. – Nick

+0

예 .. 첫 번째 하위 항목에 색상을 설정할 수 있습니다.이 항목은 기본적으로 하위 항목에 캐스팅 된 ListViewItem의 표현입니다. 항목 또는 위치 항목 이하 항목의 forecolor를 설정하면 전체 행에 영향을 미칩니다. ListView 공통 컨트롤에 대한 .NET 래퍼의 구현 세부 사항으로 공용 컨트롤의 제한 사항이 아닙니다. –

관련 문제