Mar*_*ijn 53 c# treeview winforms
我正在使用以下代码使我的treenodes加粗:
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);
}
Run Code Online (Sandbox Code Playgroud)
但粗体节点的文本未正确显示.最后一个字母未显示.怎么会?以及如何解决这个问题?
Blu*_*unT 61
我在网上搜索时找到了这个帖子,因为我遇到了完全相同的问题.
但是,在节点的末尾添加空格不是一种选择,我找到了一种似乎可以解决问题的替代方法.
设置节点字体Bold后,我需要做的就是重置具有相同值的节点文本.
这是代码示例:
Font boldFont = new Font(treeview.Font, FontStyle.Bold);
node.NodeFont = boldFont;
node.Text = node.Text;
Run Code Online (Sandbox Code Playgroud)
在更改文本后,似乎重新绘制了节点,这正是我想要的.
Mar*_*ijn 19
我发现这是一个Windows问题.解决此问题的方法是:
在表单构造函数中,将树视图的字体设置为粗体.添加不能为粗体的节点时,请将字体更改为常规:
// 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);
Run Code Online (Sandbox Code Playgroud)