如果字体从粗体更改为常规,则会截断TreeView文本

时间:2010-02-10 18:41:55

标签: .net fonts treeview bold

我有一个WinForms TreeView。 TreeView代表更详细视图的摘要,我正在使用的一个视觉提示是使节点的文本变为粗体或常规。 问题是,如果您将节点的字体从常规字体更改为粗体,则会剪切文本,就好像它试图使粗体文本适合常规文本一样。

一些浏览表明,通常的解决方法是将TreeView的字体设置为粗体字,并选择性地将节点设置为常规。

这确实更好用,但是一旦我将节点更改为常规节点,如果我将其返回更改为粗体,它将再次被剪裁。 由于我正在动态更新我的观点,我遇到了这个问题。

令人惊讶的是我在Stackoverflow上找不到任何关于这个问题的引用,所以我想我现在就把它放在这里。 有没有人知道这个问题的更彻底(但最好不是太复杂)的解决方法或解决方案?

我正在使用.Net 2.0上运行的C#3,但如果需要可以使用.Net 3.5。

[更新]

没有接受者呃?太糟糕了。到目前为止,我提出的最好的方法是在字符串的末尾添加一些空格(以便为它增长空间)。这闻起来很多层次(尤其是因为它会影响滚动条)。我不想去第三方控制(或写我自己的),因为这只是我的开发团队的内部应用程序。考虑改变隐喻,但这是一个很好的契合。

3 个答案:

答案 0 :(得分:10)

我遇到了与VB.Net相同的问题,解决方法是调用以下内容:

TreeView.BeginUpdate() ' - 在这里对你的树节点进行Poupulate。 TreeView.EndUpdate()

答案 1 :(得分:3)

找到另一个解决方案:在添加具有键和文本属性的节点后,在更改字体后设置文本,而不是更改字体

答案 2 :(得分:0)

我遇到了同样的问题(C#)。我的解决方案是:在开始时将treeView字体设置为粗体,当某些节点不能为粗体时,将字体更改为常规字体:

if (conditionForRegularTreeNode)
  newNode.NodeFont = new Font(treeView.Font, FontStyle.Regular);