3

listboxWindowsフォームで何かを選択したときに得られる醜い青色をどのように変更しますか?私が見つけたすべてのソリューションには、コントロール全体を再作成するか、WPFを使用することが含まれます。WinForms内でそれを行う方法はありますか?

4

2 に答える 2

12

DrawModeリストボックスを設定し、イベントOwnerDrawFixedにサブスクライブします。DrawItem

private void listBox_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawBackground();
    Graphics g = e.Graphics;
    Brush brush = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ? 
                  Brushes.Red : new SolidBrush(e.BackColor);
    g.FillRectangle(brush, e.Bounds);
    e.Graphics.DrawString(listBox.Items[e.Index].ToString(), e.Font, 
             new SolidBrush(e.ForeColor), e.Bounds, StringFormat.GenericDefault); 
    e.DrawFocusRectangle();            
}

e.Stateイベント引数のプロパティを確認することで、描画項目の状態を判断できます。状態がSelectedの場合は、好きなブラシ(赤など)を使用してアイテム行を塗りつぶします。

于 2012-12-02T23:30:01.727 に答える
4

編集する前に..(彼はリストボックスではなくリストビューについて尋ねます)

ObjectListView:

ListView1.UseCustomSelectionColors = true;
ListView1.HighlightBackgroundColor = Color.Red; // for example :)
ListView1.UnfocusedHighlightBackgroundColor = Color.Red;

リストビュー :

myitem.BackColor = Color.Red;
于 2012-12-02T23:18:19.463 に答える