【问题标题】:TreeView with multi-color TreeNode text具有多色 TreeNode 文本的 TreeView
【发布时间】:2012-01-03 08:52:25
【问题描述】:

我需要让 TreeView 中节点内的文本在单词或字符中着色。那可能吗?要走的路是什么?我听说过自定义绘图,但没有经验!

【问题讨论】:

    标签: c# winforms treeview treenode


    【解决方案1】:

    设置TreeView的属性:

    treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
    

    然后从 DrawNode 事件:

    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);
    }
    

    更多来自 MSDN:TreeView.DrawNode Event

    【讨论】:

    • 我怎么能改变这个,所以 node.text 的一半是红色,另一半是默认颜色(黑色)
    • @PhaDaPhunk 哪一半?你的意思是两个字吗?一红一黑?
    • 没错,就是两个字。如有必要,它们之间可能会有一个拆分字符,例如“-”
    • @PhaDaPhunk 这将需要调用 TextRenderer 两次,中间进行一些测量。 TextRenderer 有一个静态的 MeasureText 函数。评论的代码太多。如果您需要帮助,请尝试将其作为问题发布。
    • 好的,我确定这是我错过的一些信息,非常感谢!
    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多