c#中如何设置listbox各选项中的字体

像这样
2024-12-18 17:44:40
推荐回答(3个)
回答1:

不确定你是用winform 还是web。。我是用winform做出来的!!

1.在load 加载初始数据!


private void Form2_Load(object sender, EventArgs e)
        {
            listBox1.Items.Add("常规");
            listBox1.Items.Add("斜体");
            listBox1.Items.Add("粗体");
            listBox1.Items.Add("粗体斜体");
            //这句话很关键关键,如果没这句,那么DrawItem是不生效的
            listBox1.DrawMode = DrawMode.OwnerDrawFixed;
        }

2.实现DrawItem事件。。

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.DrawBackground();
            if (e.Index > -1)
            {
                Font f = null;
                switch (e.Index)
                {
                    case 0:
                        f = new Font("宋体", 9, FontStyle.Regular);
                        e.Graphics.DrawString(Convert.ToString(listBox1.Items[e.Index]), f, Brushes.Red, e.Bounds);
                        break;
                    case 1:
                        f = new Font("宋体", 9, FontStyle.Italic);
                        e.Graphics.DrawString(Convert.ToString(listBox1.Items[e.Index]), f, Brushes.Yellow, e.Bounds);
                        break;
                    case 2:
                        f = new Font("宋体", 9, FontStyle.Bold);
                        e.Graphics.DrawString(Convert.ToString(listBox1.Items[e.Index]), f, Brushes.SteelBlue, e.Bounds);
                        break;
                    case 3:
                        f = new Font("宋体", 9, FontStyle.Italic | FontStyle.Bold);
                        e.Graphics.DrawString(Convert.ToString(listBox1.Items[e.Index]), f, Brushes.Gray, e.Bounds);
                        break;
                }
            }
        }

3.最终效果如下:


这个花了我些时间,希望对你有帮助,有问题可以在讨论,加油!!!

回答2:

不能!!,除非你重绘!!

回答3:

你是说选中的项变换字体吗? 那个貌似只有自己画