Тексты в виде дерева (формы Windows) выделяются жирным шрифтом при загрузке дерева.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Тексты в виде дерева (формы Windows) выделяются жирным шрифтом при загрузке дерева.

Сообщение Гость »


Я использую древовидное представление (формы Windows) в приложении, которое имеет странную тенденцию отображать жирный текст при загрузке:


Изображение


Когда древовидное представление полностью загружено, тексты отображаются нормально:


Изображение


Я хочу, чтобы текст не выделялся жирным шрифтом во время загрузки.

Итак, чтобы дать некоторую техническую информацию: для древовидного представления я использую TreeviewDrawMode -> OwnerDrawText:

trvScheduling.DrawMode = TreeViewDrawMode.OwnerDrawText; А в событии OnDrawNode в виде дерева я использую следующий код:

защищенное переопределение void OnDrawNode(DrawTreeNodeEventArgs e) { if (e.Node == null) return; if (e.Node.IsVisible == false) return; var selected = (e.State & TreeNodeStates.Selected) == TreeNodeStates.Selected; //var unfocused = !e.Node.TreeView.Focused; если (e.Node.TreeView.CheckBoxes == false) { // нам нужно отрисовать владельца только на выбранном узле // и когда древовидное представление не сфокусировано, иначе пусть ОС сделает это за нас если (выбрано) { вар шрифт = e.Node.NodeFont ?? e.Node.TreeView.Font; Кисть SolidBrush = новая SolidBrush(WinFormsUITheme.styleColor); e.Graphics.FillRectangle(solidBrush, e.Bounds); TextRenderer.DrawText(e.Graphics, e.Node.Text, шрифт, e.Bounds, Color.White, TextFormatFlags.GlyphOverhangPadding); } еще { e.DrawDefault = правда; } } еще { //if (e.Node == null) return; if ((e.State & TreeNodeStates.Selected) != 0) { вар шрифт = e.Node.NodeFont ?? e.Node.TreeView.Font; Кисть SolidBrush = новая SolidBrush(Color.White); e.Graphics.FillRectangle(solidBrush, new Rectangle(e.Bounds.Left, e.Bounds.Top, e.Bounds.Right, 16)); } //Используем фон и текст узла по умолчанию. еще { //e.DrawDefault = true; } // Если тег узла присутствует, рисуем его строковое представление // справа от текста метки. если (e.Node.ToolTipText != ноль) { //e.Node.Text внутренний цвет; bool isValidInt = int.TryParse(e.Node.ToolTipText.ToString(), цвет вывода); если (isValidInt) { Кисть colorBrush = new SolidBrush(Color.FromArgb(color)); //e.Graphics.FillRectangle(colorBrush, new Rectangle(e.Bounds.Right + 2, e.Bounds.Top, 10, 10)); e.Graphics.FillRectangle(colorBrush, new Rectangle(e.Bounds.Left + 2, e.Bounds.Top + 2, 10, 10)); e.Graphics.DrawString(e.Node.Text.ToString(), tagFont, Кисти.Черный, e.Bounds.Left + 12, e.Bounds.Top); } еще { e.DrawDefault = правда; } } } } Интересно, может быть, что-то идет «не так» в событии OnDrawNode, из-за которого появляются эти «жирные» тексты во время загрузки древовидного представления. Кто-нибудь знает, что является причиной этого?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»