想要使用c#在winforms中的treenode中加粗一个单词的几个字符
本文关键字:一个 单词 字符 几个 winforms treenode 中的 | 更新日期: 2023-09-27 18:02:54
我有"search TextBox"在treeview中搜索,我给出的结果很好。但是我想让这些部分得到粗体,我在我的winform的"搜索文本框"中输入。
示例:我输入Ram,然后它给出*Ram*esh .
TreeNode类不支持,它的文本总是用一种字体绘制,即TreeView.Font。将部分文本加粗在技术上是可行的,但很难做到正确。你需要在TreeView中启用自定义绘图。DrawMode属性和drawwitem事件,在MSDN库的文章中有一个很好的例子。
这是简单的部分,困难的问题是节点太小,在你用粗体绘制部分后无法容纳文本。TreeView缺少一个允许你请求足够空间的"MeasureNodeText"事件。唯一的解决方法是对节点文本撒谎,并通过前缀字符人为地使其变宽。然后你不会在drawwitem事件中绘制。很难做到始终正确,你会想要考虑使用固定间距字体。
我不建议您这样做,除非该特性对您非常重要。这就解释了为什么你从来没有在其他程序中看到这个功能。考虑改变颜色而不是字体粗细。顺便说一句,还是很难把这些碎片粘在一起。