我使用以下代码将我的树节点设置为粗体:
Font font = new Font(tvQuestionSequence.Font, FontStyle.Bold);
foreach (QuestionnaireBuilder_Category cat in categories)
{
TreeNode node = new TreeNode();
node.Text = cat.Description;
node.Name = cat.Id.ToString();
node.NodeFont = font;
tvQuestionSequence.Nodes.Add(node);
}
但是粗体节点的文本不能正确显示。未显示最后一个字母。怎么会这样?如何解决这个问题呢?
发布于 2010-02-16 20:14:50
我发现这是一个Windows问题。此问题的解决方法如下所示:
在窗体构造函数中,将treeview的字体设置为粗体。添加不能为粗体的节点时,将字体更改为regular:
// Constructor of your form
public Form()
{
InitializeComponent();
Font font = new Font(tvQuestionSequence.Font, FontStyle.Bold);
tvQuestionSequence.Font = font;
}
// Add regular nodes (not bold)
Font font = new Font(tvQuestionSequence.Font, FontStyle.Regular);
TreeNode treeNode = new TreeNode();
treeNode.Text = "Foo";
treeNode.NodeFont = font;
TreeNode parent = tvQuestionSequence.Nodes.Find("parent", true);
parent.Nodes.Add(treeNode);
发布于 2011-04-27 21:31:58
我在网上搜索时发现了这篇文章,因为我正面临着完全相同的问题。
然而,在节点的末尾添加一个空格并不是一种选择,我找到了一种似乎可以解决这个问题的替代方法。
在设置节点字体粗体后,我需要做的就是将节点文本重置为相同的值。
以下是代码示例:
Font boldFont = new Font(treeview.Font, FontStyle.Bold);
node.NodeFont = boldFont;
node.Text = node.Text;
似乎节点在更改文本后被重新绘制,这正是我首先想要的。
发布于 2016-12-29 05:10:21
只需在加粗节点之前使用treeView.BeginUpdate(),然后在加粗节点之后使用treeView.EndUpdate()。
https://stackoverflow.com/questions/2272493
复制相似问题