如何使ListViewItem的文本的一部分大胆?(How to make part of List

2019-10-17 03:47发布

我在详细模式一个ListView,我想有一些项目文本的粗体(突出显示在那里找到的项目文本的一些子)。

因此,像这样:

Somefilename / boldText的/ etc

有没有办法做到这一点?

Answer 1:

好了,所以这将是困难的,因为你将不得不OwnerDrawListView通过属性设置为第一个true 。 现在,你这样做,你会需要实现DrawColumnHeader并将这一行吧:

e.DrawDefault = true;

接下来,您将需要执行下面的代码,无论是在DrawItemDrawSubItem取决于哪个区域存在的,记住我给你的代码是没有完全完成,因为它没有解析字符串或任何与你进一步还需要实现绘制选择的项目,因为现在你的画上自己的文字。

var boldFont = new Font(this.Font, FontStyle.Bold);
var location = new PointF(e.Bounds.Location.X, e.Bounds.Location.Y);

e.Graphics.DrawString("Somefilename/", this.Font, Brushes.Black, location);
var size = e.Graphics.MeasureString("Somefilename/", this.Font);

location.X += size.Width;
e.Graphics.DrawString("boldText", boldFont, Brushes.Black, location);
size = e.Graphics.MeasureString("boldText", boldFont);

location.X += size.Width;
e.Graphics.DrawString("/etc", this.Font, Brushes.Black, location);

另外要注意的是,你必须与偏移一点玩,因为有些字体有边距和加粗字体占用更多的空间。

如果Item不是一个SubItem ,然后只需实现e.DrawDefault = true; 对于DrawSubItem的事件-正相反,如果该项目是一个SubItem ,然后执行该行DrawItem



Answer 2:

你必须重写的OnPaint。 请点击以下链接:

一个标签的文本制作部分被造型大胆

在自定义的WinForms ListView的?

但是,列表视图不是由.NET Framework画和仅支持。 所以,即使你重写OnPaint,它可能不会被调用。 所以,你可能要重写你的ListView控件为好。



文章来源: How to make part of ListViewItem text to be bold?