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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中如何设置listbox各选项中的字体相关的知识,希望对你有一定的参考价值。

像这样

不确定你是用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.最终效果如下:


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

参考技术A 不能!!,除非你重绘!!追问

    那怎么重绘呢

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

如何使 SplitContainers 中的 ListBoxes 正确调整大小?

【中文标题】如何使 SplitContainers 中的 ListBoxes 正确调整大小?【英文标题】:How to make ListBoxes in SplitContainers resize properly? 【发布时间】:2018-12-06 20:00:11 【问题描述】:

要重现此问题,

新建一个 WinForms 项目 使用 WinForms 设计器,添加SplitContainer 将其方向设置为水平 将其停靠栏设置为填充 在SplitContainer的每个容器中,添加ListBox 将其停靠栏设置为填充 增大其字体大小,以便更清楚地观察相关行为 向列表框中添加一些项目

完成这些步骤后,设计器应如下所示:

现在运行程序 调整SplitContainer中的容器大小

您应该看到,对于某些大小的上部容器,两个列表框之间会有一个空格(对不起,我的鼠标写得不好)。

对于其他尺寸的上部容器,几乎没有空间。

我假设这是因为列表框不能显示“半个项目”,所以它会减小它的大小以不显示半个项目。这是真的吗?

我想到了以下解决方案:

限制拆分容器的可调整大小,因此用户只能在“步长”中调整大小,其中每个步长等于列表框中一个项目的高度。

但是,我不太喜欢这样,因为当项目高度很大时,用户体验会感觉不自然(至少对我而言)。

我怎样才能使列表框正确调整大小(即不留空隙)?

【问题讨论】:

【参考方案1】:

您可以将IntegralHeight属性设置为false,以达到想要的效果。

https://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.integralheight(v=vs.110).aspx

获取或设置一个值,该值指示控件是否应调整大小以避免显示部分项。

【讨论】:

以上是关于c#中如何设置listbox各选项中的字体的主要内容,如果未能解决你的问题,请参考以下文章

如何使 SplitContainers 中的 ListBoxes 正确调整大小?

C#中的listBox

C# winform中关于两个ListBox清除selectIndex的问题。

vb listbox控件中的某些项如何设置为默认选中?

关于 C# 中list<string> 的用法

C#, 从一个 List 中选出最大值并用红色字体显示的写法。