C# Treenode文本不同颜色的单词

C# Treenode文本不同颜色的单词,c#,winforms,colors,treeview,treenode,C#,Winforms,Colors,Treeview,Treenode,我有一个TreeView,每个都是节点。Text有两个单词。 第一个和第二个单词应该有不同的颜色。我已经在使用DrawMode属性和DrawNode事件更改文本的颜色,但我不知道如何以两种不同的颜色拆分节点。有人指出我可以使用TextRenderer.MeasureText,但我不知道如何/在哪里使用它 有人有主意吗 代码: formload() { treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText; } private void t

我有一个
TreeView
,每个都是
节点。Text
有两个单词。 第一个和第二个单词应该有不同的颜色。我已经在使用
DrawMode
属性和
DrawNode
事件更改文本的颜色,但我不知道如何以两种不同的颜色拆分
节点。有人指出我可以使用
TextRenderer.MeasureText
,但我不知道如何/在哪里使用它

有人有主意吗


代码:

formload()
{
  treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
}

private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) 
{
Color nodeColor = Color.Red;
if ((e.State & TreeNodeStates.Selected) != 0)
  nodeColor = SystemColors.HighlightText;

 TextRenderer.DrawText(e.Graphics,
                    e.Node.Text,
                    e.Node.NodeFont,
                    e.Bounds,
                    nodeColor,
                    Color.Empty,
                    TextFormatFlags.VerticalCenter);
}
试试这个:

    private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
    {
        string[] texts = e.Node.Text.Split();
        using (Font font = new Font(this.Font, FontStyle.Regular))
        {
            using (Brush brush = new SolidBrush(Color.Red))
            {
                e.Graphics.DrawString(texts[0], font, brush, e.Bounds.Left, e.Bounds.Top);
            }

            using (Brush brush = new SolidBrush(Color.Blue))
            {
                SizeF s = e.Graphics.MeasureString(texts[0], font);
                e.Graphics.DrawString(texts[1], font, brush, e.Bounds.Left + (int)s.Width, e.Bounds.Top);
            }
        }
    }
您必须管理节点的
状态
,才能执行适当的操作

更新


对不起,我的错误请参阅更新版本。没有必要测量空间大小,因为它已经包含在
文本[0]

中。您能解释一下您的代码吗?在winforms中,这是不可能的,您必须使用图像。@MrFox如果他想更改前颜色,这在winforms中是完全可能的,但他必须首先澄清这是否是winforms,WPF,等等…是winforms我加上了tagGenius!!突出显示有一个小问题,它没有突出显示整个文本。但我会想办法纠正的。还有一件事。有没有办法捕捉到一个节点中只有一个单词?(在最后一行使程序崩溃)因为这是一种罕见但可能的结果。如果您在程序中尝试,可能会遇到此问题(将在另一个问题中发布)我实现了与您一周前给我的解决方案类似的解决方案,并且出现了一个图形故障,其中节点没有在正确的位置绘制。这就是为什么我今天又问了一次,但问题仍然存在。问题就在这里,谢谢!!