Я делаю следующее, я устанавливаю событие DrawNode для вызова, он устанавливает жирный узел и удаляет выделенный цвет.
Вы можете установить любой понравившийся вам цвет, используя первый параметр функции e.Graphics.FillRectangle.
private void SetNodeBoldWhenSelected(object sender, DrawTreeNodeEventArgs e)
{
if (e.Node == null) return;
var font = e.Node.NodeFont ?? e.Node.TreeView.Font;
if (e.Node.IsSelected)
{
font = new Font(font, FontStyle.Bold);
}
var bounds = new Rectangle( e.Bounds.X,e.Bounds.Y,e.Bounds.Width+20,e.Bounds.Height);
e.Graphics.FillRectangle(SystemBrushes.ControlDarkDark, bounds);
TextRenderer.DrawText(e.Graphics, e.Node.Text, font, bounds, SystemColors.HighlightText, TextFormatFlags.GlyphOverhangPadding);
}
Теперь, когда я выбираю узел, я получаю на 20 пикселей больше места, для моего шрифта это работает хорошо, можно вычислить необходимый «реальный» размер, но нет спецификации, подтверждающей, что это необходимо, но вы можете использовать Graphics. MeasureString, если вы чувствуете, что должны это сделать.