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 件のコメント:
コメントを投稿