![]() |
| ListBoxの奇数行の背景色を変える |
ListBox.DrawModeプロパティを OwnerDrawFixedにする。
ListBox.DrawItemイベントに以下を追加する。
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
var idx = e.Index; //描画対象の行
if (idx == -1) return; //範囲外なら何もしない
var sts = e.State; //セルの状態
var fnt = e.Font; //フォント
var _bnd = e.Bounds; //描画範囲(オリジナル)
var bnd = new RectangleF(_bnd.X, _bnd.Y, _bnd.Width, _bnd.Height); //描画範囲(描画用)
var txt = (string)listBox1.Items[idx]; //リストボックス内の文字
var bsh = new SolidBrush(listBox1.ForeColor); //文字色
var sel = (DrawItemState.Selected == (sts & DrawItemState.Selected)); //選択行か
var odd = (1 == idx % 2); //奇数行か
var bak = Brushes.Gold; //奇数行の背景色
e.DrawBackground(); //背景描画
//奇数項目の背景色を変える(選択行は除く)
if (odd && !sel)
{
e.Graphics.FillRectangle(bak, bnd);
}
//文字を描画
e.Graphics.DrawString(txt, fnt, bsh, bnd);
}

0 件のコメント:
コメントを投稿