Я использую следующий код для создания моего 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);
}
Но текст полужирных узлов не отображен правильно. Последнюю букву (буквы) не показывают. Каким образом? И как решить эту проблему?
Я обнаружил, что это проблема 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);
Это известная ошибка Windows. Простое решение - просто добавить лишний пробел в конце ваших строк. Пробел не будет виден, но он увеличит количество пикселей, необходимых для рисования строки, поэтому вся строка будет видна.