Treeview绘制故障

时间:2012-12-11 17:15:54

标签: c# winforms colors treeview

我为每个TreeView节点实现了一个多色系统。但每次我展开一个子节点时,它都会消耗,但也会在我的rootNode上绘制节点(图像2和3)。代码来自my previous question,这就是bug的样子

enter image description here

如果我决定关闭每个节点并重新扩展毛刺消失了。(图4)

问题似乎是Bounds这就是为什么抽奖不在正确的地方。 知道为什么吗?


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

2 个答案:

答案 0 :(得分:5)

绘图故障似乎是一个准确的描述。

您可以通过订阅AfterExpand事件来尝试这项工作:

void treeView1_AfterExpand(object sender, TreeViewEventArgs e) {
  treeView1.Invalidate();
}

答案 1 :(得分:0)

确保使用: “ BeginUpdate()”和“ EndUpdate()”每次填充TreeView

EndUpdate()”< - 是摆脱这种小故障的最重要的事情!

祝你好运! :)

干杯, J