c# - TreeView 绘制故障

标签 c# winforms colors treeview

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

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

最佳答案

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

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

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

关于c# - TreeView 绘制故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825167/

相关文章:

c# - 如何将 C++ 代码包装到具有大量 float*(代表点)的 CLI 中?

c# - SECURITY_ATTRIBUTES 何时更改,为什么更改?

c# - 从 TextWriterTraceListener 获取跟踪文件名?

javascript - 在 C# 中创建一个 JavaScript 函数

c++ - FFmpeg 中 RGB 到 YUV 的转换错误

c# - 将图片插值为特定颜色

c# - 我如何计算和创建字符串变量而不是 int 变量?

c# - C# 中的右对齐组合框

c# - .NET 设置图片显示大小

c# - 改变物体的颜色而不损害纹理