ListView.DrawSubItem ListView.DrawSubItem ListView.DrawSubItem ListView.DrawSubItem Event

정의

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 

예제

다음 코드 예제에서는 구현을 제공을 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.

참고

하위 항목 정보 일반적으로 바둑판식 뷰에서 뿐만 아니라 세부 정보를 보려면 나타나지만 바둑판식 뷰에서 해당 그려야에 대 한 처리기를 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.

적용 대상

추가 정보