0

リスト ボックス項目の背景をさまざまな色で強調表示する方法を見つけようとしていますが、この 4 年前のクローズド スレッドに出くわしました。

ListBox 項目の背景色 (winform)

私は彼の方法を使用する方法に従っていません。では、listBox1 という名前のオブジェクトと strSomeString という名前の文字列変数を作成した場合、strSomeString を listBox1 に赤い背景で追加するための正確なコードは何でしょうか?

ここで Shadow Wizard のコードを使用します。

    private void lbReports_DrawItem(object sender, DrawItemEventArgs e)
    {
        e.DrawBackground();

        bool selected = ((e.State & DrawItemState.Selected) == DrawItemState.Selected);

        int index = e.Index;
        if (index >= 0 && index < lbReports.Items.Count)
        {
            string text = lbReports.Items[index].ToString();
            Graphics g = e.Graphics;

            Color color = (selected) ? Color.FromKnownColor(KnownColor.Highlight) : (((index % 2) == 0) ? Color.White : Color.Gray);
            g.FillRectangle(new SolidBrush(color), e.Bounds);

            // Print text
            g.DrawString(text, e.Font, (selected) ? reportsForegroundBrushSelected : reportsForegroundBrush, 
                lbReports.GetItemRectangle(index).Location);
        }

        e.DrawFocusRectangle();
    }

-ありがとう

4

2 に答える 2

0

リストボックスの Draw_item イベントを lbReports_DrawItem ハンドラーにフックするだけです。リストボックスのプロパティで設定することでそれを行うことができます。

もう 1 つのことは、DrawMode を OwnerDrawFixed に設定することです。

于 2013-01-17T01:05:21.707 に答える
0

これにはオーナー描画コントロールの使用を検討してください。

すべてのリスト コンテンツをレンダリングする必要があるため、より多くの作業が必要になります。しかし、完全な柔軟性が得られます。

于 2013-01-17T00:27:35.937 に答える