ListView.DrawItem ListView.DrawItem ListView.DrawItem ListView.DrawItem Event

정의

발생 경우를 ListView 그려지는 및 OwnerDraw 속성이 true합니다.Occurs when a ListView is drawn and the OwnerDraw property is set to true.

public:
 event System::Windows::Forms::DrawListViewItemEventHandler ^ DrawItem;
public event System.Windows.Forms.DrawListViewItemEventHandler DrawItem;
member this.DrawItem : System.Windows.Forms.DrawListViewItemEventHandler 
Public Custom Event DrawItem As DrawListViewItemEventHandler 

예제

다음 코드 예제에서는 구현을 제공을 DrawItem 이벤트 처리기입니다.The following code example provides an implementation of a DrawItem event handler. 전체 예제를 참조 하세요.를 OwnerDraw 참조 항목입니다.For the complete example, see the OwnerDraw reference topic.

// Draws the backgrounds for entire ListView items.
private void listView1_DrawItem(object sender,
    DrawListViewItemEventArgs e)
{
    if ((e.State & ListViewItemStates.Selected) != 0)
    {
        // Draw the background and focus rectangle for a selected item.
        e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds);
        e.DrawFocusRectangle();
    }
    else
    {
        // Draw the background for an unselected item.
        using (LinearGradientBrush brush =
            new LinearGradientBrush(e.Bounds, Color.Orange,
            Color.Maroon, LinearGradientMode.Horizontal))
        {
            e.Graphics.FillRectangle(brush, e.Bounds);
        }
    }

    // Draw the item text for views other than the Details view.
    if (listView1.View != View.Details)
    {
        e.DrawText();
    }
}
' Draws the backgrounds for entire ListView items.
Private Sub listView1_DrawItem(ByVal sender As Object, _
    ByVal e As DrawListViewItemEventArgs) _
    Handles listView1.DrawItem

    If Not (e.State And ListViewItemStates.Selected) = 0 Then

        ' Draw the background for a selected item.
        e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds)
        e.DrawFocusRectangle()

    Else

        ' Draw the background for an unselected item.
        Dim brush As New LinearGradientBrush(e.Bounds, Color.Orange, _
            Color.Maroon, LinearGradientMode.Horizontal)
        Try
            e.Graphics.FillRectangle(brush, e.Bounds)
        Finally
            brush.Dispose()
        End Try

    End If

    ' Draw the item text for views other than the Details view.
    If Not Me.listView1.View = View.Details Then
        e.DrawText()
    End If

End Sub

설명

이 이벤트의 모양을 사용자 지정할 수 있습니다는 ListView 소유자 그리기를 사용 하 여 제어 합니다.This event lets you customize the appearance of a ListView control using owner drawing. 발생 하는 경우에만 합니다 OwnerDraw 속성이 true합니다.It is raised only when the OwnerDraw property is set to true. 소유자 그리기에 대 한 자세한 내용은 참조는 OwnerDraw 속성 참조 항목입니다.For more information about owner drawing, see the OwnerDraw property reference topic.

합니다 DrawItem 각각에 대 한 이벤트가 발생할 수 있습니다 ListView 항목입니다.The DrawItem event can occur for each ListView item. 경우는 View 속성이로 설정 되어 View.Details, DrawSubItemDrawColumnHeader 이벤트도 발생 합니다.When the View property is set to View.Details, the DrawSubItem and DrawColumnHeader events also occur. 이 경우 처리할 수 있습니다는 DrawItem 백그라운드 등의 모든 항목에 공통 되는 요소를 그리기를 처리 해야 하는 이벤트를 DrawSubItem 텍스트 값과 같은 개별 하위 항목에 대 한 요소를 그리려면 이벤트입니다.In this case, you can handle the DrawItem event to draw elements common to all items, such as the background, and handle the DrawSubItem event to draw elements for individual subitems, such as text values. 모든 항목을 그릴 수도 있습니다는 ListView 하기가 다소 불편 수도 있지만 두 이벤트 중 하나만 사용 하 여 제어 합니다.You can also draw all items in the ListView control using only one of the two events, although this may be less convenient. 세부 정보 뷰에서 열 머리글을 그리려면, 처리 해야 합니다는 DrawColumnHeader 이벤트입니다.To draw column headers in the details view, you must handle the DrawColumnHeader event.

참고

기본 Win32 컨트롤의 버그 때문 합니다 DrawItem 이벤트가 발생 하지 않고 DrawSubItem 행 위에 마우스 포인터를 움직이면 세부 정보 뷰에서 행 마다 한 번씩 이벤트에서 그린 아무 것도 발생을 DrawSubItem 되도록 이벤트 처리기 조치에 그릴 사용자 지정 배경을 칠하는 DrawItem 이벤트 처리기입니다.Because of a bug in the underlying Win32 control, the DrawItem event occurs without accompanying DrawSubItem events once per row in the details view when the mouse pointer moves over the row, causing anything painted in a DrawSubItem event handler to be painted over by a custom background drawn in a DrawItem event handler. 예제를 참조 합니다 OwnerDraw 추가 이벤트가 발생할 때 각 행을 무효화 하는 해결 방법을 참조 합니다.See the example in the OwnerDraw reference topic for a workaround that invalidates each row when the extra event occurs. 다른 해결 방법은 모든 사용자 지정 그리기 코드에 삽입할를 DrawSubItem 이벤트 처리기 및 전체 항목 (하위 항목 포함)의 배경 그리는 경우에만 DrawListViewSubItemEventArgs.ColumnIndex 값은 0입니다.An alternative workaround is to put all your custom drawing code in a DrawSubItem event handler and paint the background for the entire item (including subitems) only when the DrawListViewSubItemEventArgs.ColumnIndex value is 0.

이벤트 처리에 대한 자세한 내용은 이벤트 처리 및 발생 을 참조하십시오.For more information about handling events, see Handling and Raising Events.

적용 대상

추가 정보