TreeView текст обрезается, если шрифт изменился с жирным шрифтом на обычный - PullRequest
4 голосов
/ 10 февраля 2010

У меня есть WinForms TreeView. TreeView представляет собой сводку более подробных видов, и одна из визуальных подсказок, которые я использую, - сделать текст узла жирным или обычным. Проблема в том, что если вы измените шрифт узла с обычного на жирный, он обрезает текст, как если бы он пытался разместить жирный шрифт в пространстве для обычного текста.

Немного просмотра показывает, что обычный обходной путь - установить шрифт TreeView на жирный шрифт и выборочно установить узлы на обычный.

Это работает лучше, но как только я изменил узел на обычный, если я затем изменил его назад на жирный, он снова обрезается. Поскольку я динамически обновляю свой взгляд, я сталкиваюсь с этой проблемой.

Удивительно, но я не смог найти никаких ссылок на эту проблему в Stackoverflow, поэтому подумал, что я сделаю свое дело и разместу его здесь и сейчас. Кто-нибудь знает о более тщательном (но желательно не слишком сложном) обходном пути или решении этой проблемы?

Я использую C # 3, работающий на .Net 2.0, но при необходимости могу использовать .Net 3.5.

[обновление]

Не берут, а? Это отстой. Лучшее, что я до сих пор придумала для себя, - это добавить кучу пробелов в конец строки (чтобы дать ей возможность расти). Это пахнет на многих уровнях (не в последнюю очередь потому, что это влияет на полосы прокрутки). Я не хочу идти на сторонний контроль (или писать свой собственный), потому что это только для внутреннего приложения для моей команды разработчиков. Рассматривая изменение метафоры, но это хорошо подходит.

Ответы [ 3 ]

10 голосов
/ 15 февраля 2010

Я столкнулся с той же проблемой с VB.Net, и решение было вызвать следующее:

TreeView.BeginUpdate () '- нарастить узлы вашего дерева здесь. TreeView.EndUpdate ()

3 голосов
/ 09 ноября 2010

нашел другое решение: установите текст после изменения шрифта вместо изменения шрифта после добавления узла со свойствами ключа и текста

0 голосов
/ 29 марта 2014

У меня такая же проблема (C #). Мое решение было: в начале установите шрифт treeView жирным шрифтом, а когда некоторые узлы не должны быть жирными, измените шрифт на обычный:

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