2014-07-13 2 views
0

vb.net을 사용하여 List View 개체에서 선택한 행의 선택된 색을 배경색으로 만들려면 어떻게해야합니까?listview에서 선택한 색상의 배경색을 만드는 방법

나는 Ownerdraw를 true로 설정하여 예제를 보았지만 열 머리글이 엉망이되었습니다. 나는 하위 항목을 통해 루프 수 있었지만 코드 블록 행 선택한 색상 뒷면 색상 여기

을 것 만들려면 :

For i = 0 To LV_ProductsEdit.SelectedItems.Item(0).SubItems.Count - 1 
     LV_ProductsEdit.SelectedItems.Item(0).SubItems(i).BackColor = Color.Gold 
    Next 

내가 원래 투명 컬러로 되돌아 비슷한 루프가을 때 새 항목이 선택되었습니다.

모든 의견.

감사

오메르는

+0

리스트 뷰가 자동으로 선택 항목을 표시하기 위해 시스템 강조 색을 사용, 당신은 다른 색상을 사용하려고? – Plutonix

+0

예, 다른 색상을 사용하려고합니다. 예를 들어 - 사용자가 행을 선택할 때 listview에서 나는 그것을 골드 컬러로 원한다. 그것은 골드 컬러를 얻지 만 사용자는 목록 뷰에 초점을 잃었을 때를 볼 수 있습니다. 그래서 행이 선택되면 하이라이트는 파란색이됩니다. – Omer

+0

코드 없이는 무엇이 잘못 될 수 있는지 알 수 없습니다. 당신은 또한 언어 태그를 추가하지 않았다 – Plutonix

답변

0

난 여전히 문제가 무엇인지 확실히 모르겠습니다. SubItems를 통해 반복 할 필요는 없습니다. 각 항목에는 동일한 글꼴, ForeColor 및 BackColor를 부모 항목으로 사용하도록 하위 항목에 알리는 UseItemStyleForSubItems 속성이 있습니다.

For Each lvi As ListViewItem In myLV.SelectedItems 
    lvi.BackColor = Color.Gold 
Next 

원래 색이 투명 아니라, SystemColors.Window을해야합니다 : True로이 디폴트 때문에 항목 배경색을 설정하면 충분합니다.


HideSelection을 False로 재설정 할 수도 있습니다. LV에 포커스가 없으면 선택한 항목이 원래 질문에서 묻은 것처럼 보이는 회색으로 강조 표시됩니다.

+0

팁을 보내 주셔서 감사합니다. 다시 말씀 드리죠. ListView에 제품 목록이 표시됩니다. 이제 내가 원하는 것은 listview에서 Gold 색상을 사용해야하는 Row를 선택했을 때 색상이 올바르게 적용된다는 것입니다.그러나 행이 선택 되었기 때문에 행의 기본 강조 색상이 파란색으로 표시되고 포커스가 다른 컨트롤 (예 : – Omer

+0

)으로 바뀌면 Windows가 작동합니다. ** 사용자 **는 시스템에서 분명히 파란색 인 '하이라이트'와 관련된 색상을 사용합니다. 이 색상은 LV SelectedItem에 사용됩니다. 당신이 그것을 금색으로하고 싶다면, 당신은 통제를 하강시키고 그림을 이어 받아야 할 것입니다. – Plutonix

+0

감사합니다. @Plutonix. 나는 그것을 좋은 팁이었던 대답으로 표시 할 것이다. :). 그냥 빠른 하나, 어떻게 하위 클래스에 대한 모든 팁? – Omer

0

선택 색상을 파란색에서 다른 것으로 변경하려는 경우 여기에서 작동하는 코드를 찾으십시오. 먼저, ownerdraw를 true로 설정하십시오. 여기, 내 listview는 ListViewQuote라고합니다.

Private Sub ListViewQuote_DrawColumnHeader(sender As Object, e As DrawListViewColumnHeaderEventArgs) Handles ListViewQuote.DrawColumnHeader 
    e.DrawDefault = True 
End Sub 

Private Sub ListViewQuote_DrawItem(sender As Object, e As DrawListViewItemEventArgs) Handles ListViewQuote.DrawItem 
    If e.Item.Selected = False Then 
     e.DrawDefault = True 
    End If 
End Sub 

Private Sub ListViewQuote_DrawSubItem(sender As Object, e As DrawListViewSubItemEventArgs) Handles ListViewQuote.DrawSubItem 
    If e.Item.Selected = True Then 
     e.Graphics.FillRectangle(New SolidBrush(FromArgb(255, 0, 0)), e.Bounds) 
     TextRenderer.DrawText(e.Graphics, e.SubItem.Text, New Font(Me.Font, Nothing), New Point(e.Bounds.Left + 3, e.Bounds.Top + 2), HighlightText) 
    Else 
     e.DrawDefault = True 
    End If 
End Sub 

그냥 변경, 내가 가진 것과 색상을 변경하려면 "새 SolidBrush (FromArgb (255, 0, 0)"당신이 원하는 브러시. 텍스트의 데 ForeColor는 "HighlightText"도 될 수있다 어떤 색으로 변경되었습니다. 이것은 목록보기의 세부 사항보기 위해 작동

을.


관련 문제