17

Visual c# Express Edition では、ListBox の一部 (すべてではない) の項目を太字にすることはできますか? APIでこれに関するオプションが見つかりません。

4

5 に答える 5

32

リストボックスの DrawMode を DrawMode.OwnerDrawFixed に変更する必要があります。msdn で次の記事を確認してください:
DrawMode Enumeration
ListBox.DrawItem Event
Graphics.DrawString Method

msdn フォーラムのこの質問も参照してください:
ListBox 項目に関する質問

簡単な例 (両方のアイテム - Black-Arial-10-Bold):

 public partial class Form1 : Form
 {
    public Form1()
    {
        InitializeComponent();

        ListBox1.Items.AddRange(new Object[] { "First Item", "Second Item"});
        ListBox1.DrawMode = DrawMode.OwnerDrawFixed;
    }

    private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
    {
        e.DrawBackground();
        e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(), new Font("Arial", 10, FontStyle.Bold), Brushes.Black, e.Bounds);
        e.DrawFocusRectangle();
    }
 }
于 2008-11-29T07:51:26.967 に答える
1

送信者を使用し、実際に前景色 (たとえば、アイテムが選択されている場合、またはユーザーが黒の前景色が実際には判読できない別の色セットを使用している場合) と現在の ListBox フォントを尊重する、より一般的な例:

    private void listBoxDrawItem (object sender, DrawItemEventArgs e)
    {
        Font f = e.Font;
        if (e.Index == 1) //TODO: Your condition to make text bold
            f = new Font(e.Font, FontStyle.Bold);
        e.DrawBackground();
        e.Graphics.DrawString(((ListBox)(sender)).Items[e.Index].ToString(), f, new SolidBrush(e.ForeColor), e.Bounds);
        e.DrawFocusRectangle();
    }

DrawMode を OwnerDrawFixed に設定する必要があります (デザイナーなどで)。

于 2015-10-01T01:06:31.820 に答える