ListView.DrawSubItem イベントとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ListView.DrawSubItem イベントの意味・解説 

ListView.DrawSubItem イベント

メモ : このイベントは、.NET Framework version 2.0新しく追加されたものです。

ListView の詳細ビュー描画されOwnerDraw プロパティtrue設定されている場合発生します

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Event DrawSubItem As
 DrawListViewSubItemEventHandler
Dim instance As ListView
Dim handler As DrawListViewSubItemEventHandler

AddHandler instance.DrawSubItem, handler
public event DrawListViewSubItemEventHandler DrawSubItem
public:
event DrawListViewSubItemEventHandler^ DrawSubItem {
    void add (DrawListViewSubItemEventHandler^ value);
    void remove (DrawListViewSubItemEventHandler^ value);
}
/** @event */
public void add_DrawSubItem (DrawListViewSubItemEventHandler
 value)

/** @event */
public void remove_DrawSubItem (DrawListViewSubItemEventHandler
 value)
JScript では、イベント使用できますが、新規に宣言することはできません。
解説解説

このイベント利用すると、オーナー描画使用して ListView コントロール外観カスタマイズできます。これは、OwnerDraw プロパティtrue設定されView プロパティが View.Details に設定されている場合にだけ発生しますオーナー描画詳細については、OwnerDraw プロパティリファレンス トピック参照してください

メモメモ

通常サブ項目の情報は、詳細ビューだけでなくタイル ビューにも表示されますが、タイル ビュー場合は DrawItem イベントハンドラ描画する必要があります

DrawSubItem イベントは、各ListView サブ項目に対して発生しますDrawItem イベント処理してすべてのサブ項目に共通の要素 (背景など) を描画し、DrawSubItem イベント処理して個々サブ項目 (テキスト値など) の要素描画できますまた、利便性低下しますが、この 2 つイベントどちらか 1 つだけ使用してListView コントロール内のすべての項目を描画することもできます詳細ビューに列ヘッダー描画するには、DrawColumnHeader イベント処理する必要があります

イベント処理詳細については、「イベント利用」を参照してください

使用例使用例

DrawSubItem イベント ハンドラ実装提供するコード例次に示します詳細については、OwnerDrawリファレンス トピック参照してください

' 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
// 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:
   void listView1_DrawSubItem( Object^ /*sender*/, DrawListViewSubItemEventArgs^
 e )
   {
      TextFormatFlags flags = TextFormatFlags::Left;
      StringFormat^ sf = gcnew StringFormat;
      try
      {
         // 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,
 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)
 == (ListViewItemStates)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 );
      }
      finally
      {
         if ( sf )
            delete (IDisposable^)sf;
      }
   }
// Draws subitem text and applies content-based formatting.
private void myListView_DrawSubItem(Object
 sender,
    DrawListViewSubItemEventArgs e)
{
    TextFormatFlags flags = TextFormatFlags.Left;
    StringFormat sf = new StringFormat();
    try {
        // Store the column text alignment, letting it default
        // to Left if it has not been set to Center or Right.
        if (e.get_Header().get_TextAlign().
            Equals(HorizontalAlignment.Center)) {

            sf.set_Alignment(StringAlignment.Center);
            flags = TextFormatFlags.HorizontalCenter;
        }
        else {
            if (e.get_Header().get_TextAlign().
                Equals(HorizontalAlignment.Right)) {

                sf.set_Alignment(StringAlignment.Far);
                flags = TextFormatFlags.Right;
            }
        }
        // Draw the text for a column header.
        if (e.get_ItemIndex() == -1) {
            Font myFont = new Font("Helvetica", 12,
 FontStyle.Bold);
            try {
                e.get_Graphics().DrawString(e.get_Item().get_Text(), 
                    myFont, Brushes.get_White(), 
                    new PointF((float)e.get_Bounds().get_X(),
 
                    (float)e.get_Bounds().get_Y()), sf);
            }
            finally {
                myFont.Dispose();
            }
            return;
        }

        // Draw the text and background for a subitem with a 
        // negative value. 
        double subItemValue = 0;
        if (e.get_ColumnIndex() > 0 && System.Double.TryParse(
            e.get_Item().get_SubItems().get_Item(e.get_ColumnIndex()).
            get_Text(), NumberStyles.Currency, 
            NumberFormatInfo.get_CurrentInfo(), subItemValue) 
            && subItemValue < 0) {

            // Unless the item is selected, draw the standard 
            // background to make it stand out from the gradient.
            if (Convert.ToInt32(e.get_ItemState() 
                & ListViewItemStates.Selected) == 0) {
                e.DrawBackground();
            }
            // Draw the subitem text in red to highlight it. 
            e.get_Graphics().DrawString(e.get_Item().get_SubItems().
                get_Item(e.get_ColumnIndex()).get_Text(), 
                ((ListView)sender).get_Font(), Brushes.get_Red(), 
                RectangleF.op_Implicit(e.get_Bounds()), sf);

            return;
        }
        // Draw normal text for a subitem with a nonnegative 
        // or nonnumerical value.
        e.DrawText(flags);
    }
    finally {
        sf.Dispose();
    }
} //myListView_DrawSubItem
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ListView クラス
ListView メンバ
System.Windows.Forms 名前空間
ColumnHeader クラス
DrawListViewSubItemEventArgs クラス
ListView.DrawItem イベント
ListView.DrawColumnHeader イベント
ListViewItem.ListViewSubItem
ListView.OwnerDraw プロパティ
ListView.View プロパティ
View
その他の技術情報
イベントデリゲート



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ListView.DrawSubItem イベント」の関連用語

ListView.DrawSubItem イベントのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ListView.DrawSubItem イベントのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS