ListView.DrawSubItem 이벤트

정의

ListView의 자세히 보기가 그려지고 OwnerDraw 속성이 true로 설정되면 발생합니다.Occurs when the details view of a ListView is drawn and the OwnerDraw property is set to true.

public:
 event System::Windows::Forms::DrawListViewSubItemEventHandler ^ DrawSubItem;
public event System.Windows.Forms.DrawListViewSubItemEventHandler DrawSubItem;
member this.DrawSubItem : System.Windows.Forms.DrawListViewSubItemEventHandler 
Public Custom Event DrawSubItem As DrawListViewSubItemEventHandler 

이벤트 유형

DrawListViewSubItemEventHandler

예제

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

// Draws subitem text and applies content-based formatting.
private void listView1_DrawSubItem(object sender,
    DrawListViewSubItemEventArgs e)
{
    TextFormatFlags flags = TextFormatFlags.Left;

    using (StringFormat sf = new StringFormat())
    {
        // Store the column text alignment, letting it default
        // to Left if it has not been set to Center or Right.
        switch (e.Header.TextAlign)
        {
            case HorizontalAlignment.Center:
                sf.Alignment = StringAlignment.Center;
                flags = TextFormatFlags.HorizontalCenter;
                break;
            case HorizontalAlignment.Right:
                sf.Alignment = StringAlignment.Far;
                flags = TextFormatFlags.Right;
                break;
        }

        // Draw the text and background for a subitem with a 
        // negative value. 
        double subItemValue;
        if (e.ColumnIndex > 0 && Double.TryParse(
            e.SubItem.Text, NumberStyles.Currency,
            NumberFormatInfo.CurrentInfo, out subItemValue) &&
            subItemValue < 0)
        {
            // Unless the item is selected, draw the standard 
            // background to make it stand out from the gradient.
            if ((e.ItemState & ListViewItemStates.Selected) == 0)
            {
                e.DrawBackground();
            }

            // Draw the subitem text in red to highlight it. 
            e.Graphics.DrawString(e.SubItem.Text,
                listView1.Font, Brushes.Red, e.Bounds, sf);

            return;
        }

        // Draw normal text for a subitem with a nonnegative 
        // or nonnumerical value.
        e.DrawText(flags);
    }
}
' Draws subitem text and applies content-based formatting.
Private Sub listView1_DrawSubItem(ByVal sender As Object, _
    ByVal e As DrawListViewSubItemEventArgs) _
    Handles listView1.DrawSubItem

    Dim flags As TextFormatFlags = TextFormatFlags.Left

    Dim sf As New StringFormat()
    Try

        ' Store the column text alignment, letting it default
        ' to Left if it has not been set to Center or Right.
        Select Case e.Header.TextAlign
            Case HorizontalAlignment.Center
                sf.Alignment = StringAlignment.Center
                flags = TextFormatFlags.HorizontalCenter
            Case HorizontalAlignment.Right
                sf.Alignment = StringAlignment.Far
                flags = TextFormatFlags.Right
        End Select

        ' Draw the text and background for a subitem with a 
        ' negative value. 
        Dim subItemValue As Double
        If e.ColumnIndex > 0 AndAlso _
            Double.TryParse(e.SubItem.Text, NumberStyles.Currency, _
            NumberFormatInfo.CurrentInfo, subItemValue) AndAlso _
            subItemValue < 0 Then

            ' Unless the item is selected, draw the standard 
            ' background to make it stand out from the gradient.
            If (e.ItemState And ListViewItemStates.Selected) = 0 Then
                e.DrawBackground()
            End If

            ' Draw the subitem text in red to highlight it. 
            e.Graphics.DrawString(e.SubItem.Text, _
                Me.listView1.Font, Brushes.Red, e.Bounds, sf)

            Return

        End If

        ' Draw normal text for a subitem with a nonnegative 
        ' or nonnumerical value.
        e.DrawText(flags)

    Finally
        sf.Dispose()
    End Try

End Sub

설명

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

참고

하위 항목 정보는 일반적으로 tile 보기 뿐만 아니라 자세히 보기에 표시 되지만, 타일 보기에서는 이벤트에 대 한 처리기에 그려야 합니다 DrawItem .Subitem information typically appears in the tile view as well as the details view, but in the tile view, it must be drawn in a handler for the DrawItem event.

DrawSubItem이벤트는 각 하위 항목에 대해 발생할 수 있습니다 ListView .The DrawSubItem event can occur for each ListView subitem. 이벤트를 처리 DrawItem 하 여 배경과 같은 모든 하위 항목에 공통 된 요소를 그리면 이벤트를 처리 하 여 DrawSubItem 텍스트 값과 같은 개별 하위 항목에 대 한 요소를 그릴 수 있습니다.You can handle the DrawItem event to draw elements common to all subitems, 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.

참고

DrawSubItem ColumnHeader 컬렉션에 개체가 추가 되지 않은 하위 항목에 대 한 이벤트는 발생 하지 않습니다 Columns .The DrawSubItem event does not occur for any subitems for which no ColumnHeader object has been added to the Columns collection. 또한 각 개체의 첫 번째 하위 ListViewItem 항목은 부모 항목 자체를 나타내며 첫 번째 열에 표시 됩니다.Note also that the first subitem of each ListViewItem object represents the parent item itself, and is displayed in the first column.

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

적용 대상

추가 정보