6.ListBox 内の項目の色を個別に設定する(オーナードローによる)(19_Lst_09) (旧、SampleNo.112) |
1.ListBox 内の項目の色を個別に設定する(オーナードローによる) 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.ListBox 内の項目の色を個別に設定する(オーナードローによる) |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As 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(sender As Object, e As DrawItemEventArgs) Handles ListBox1.DrawItem 'オーナー描画の ListBox 項目を作成(ヘルプに同様のサンプルあり) '項目が選択された場合は強調表示 e.DrawBackground() Dim myBrush As Brush = Brushes.Black '文字を描画するブラシの色を決定する。 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).ToString(), 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(sender As Object, e As 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 End Class 図1.上記実行結果 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
リストボックス 文字色 前景色 |