8

我为每个TreeView节点实现了一个多色系统。但是每次我扩展一个子节点时,它都会扩展,但也会在我的 rootNode 上绘制节点(图 2 和 3)。代码来自我之前的问题,这就是错误的样子

在此处输入图像描述

如果我决定关闭每个节点并重新扩展,故障就消失了。(图 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);
        }
    }
  }
4

2 回答 2

5

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

您可以通过订阅 AfterExpand 事件来尝试解决此问题:

void treeView1_AfterExpand(object sender, TreeViewEventArgs e) {
  treeView1.Invalidate();
}
于 2012-12-11T18:48:51.763 回答
0

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

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

祝你好运!:)

干杯,J

于 2018-03-30T19:34:35.947 回答