玄関へお回り下さい。
ListBox内の項目の色を個別に設定する(オーナードローによる)              (SNo.112)
使用コントロール Button1  ListBox1
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
 
★ ListBox内の項目の色を個別に設定する(オーナードローによる)
 
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
''文字色を設定(オーナードローで)
    If ListBox1.DrawMode = DrawMode.OwnerDrawFixed Then
        ListBox1.DrawMode = DrawMode.Normal
    Else
        ListBox1.DrawMode = DrawMode.OwnerDrawFixed
    End If
End Sub

Private Sub listBox1_DrawItem(ByVal sender As System.Object, ByVal e As _
            System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
' オーナー描画の ListBox 項目を作成(ヘルプに同様のサンプルあり)
    '項目が選択された場合は強調表示
    e.DrawBackground()
    Dim myBrush As Brush
    '文字を描画するブラシの色を決定する。
    If (e.State And DrawItemState.Selected) <> DrawItemState.Selected Then
        '項目が選択されていない場合文字色を指定の色で描画
        Select Case e.Index Mod 4
            Case 0
                myBrush = Brushes.Red
            Case 1
                myBrush = Brushes.Blue
            Case 2
                myBrush = Brushes.Yellow
            Case 3
                myBrush = Brushes.Green
        End Select
    Else
        '選択されている場合はそのままの文字色で
        myBrush = New SolidBrush(e.ForeColor)
    End If
    '指定した位置に、指定した Brush オブジェクトと 
    'Font オブジェクトで、指定した文字列を描画
    e.Graphics.DrawString(ListBox1.Items(e.Index), e.Font, myBrush, _
        New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
    '描画されている項目に Focus がある場合は、フォーカスを示す四角形を描画する
    e.DrawFocusRectangle()
End Sub


別途、下記のような表示データをご用意下さい。

Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load
    With ListBox1
        .Items.Add("あいうえお  アイウエオ")
        .Items.Add("かきくけこ  カキクケコ")
        .Items.Add("さしすせそ  サシスセソ")
        .Items.Add("たちつてと  タチツテト")
        .Items.Add("なにぬねの  ナニヌネノ")
        .Items.Add("はひふへほ  ハヒフヘホ")
        .Items.Add("まみむめも  マミムメモ")
        .Items.Add("や  ゆ  よ  ヤ  ユ  ヨ")
        .Items.Add("らりるれろ  ラリルレロ")
        .Items.Add("わをん      ワヲン")
    End With
End Sub
 
          実行結果
       







2004.05.10
2005/10/18


VBレスキュー(花ちゃん)
VB.NET2003  VB2005