treeview事件DrawNode未触发

时间:2013-08-03 06:11:18

标签: c# treeview

即使所选项目未聚焦,我也希望更改树视图中所选项目的颜色。我正在使用DrawoNode为此目的。但是我的DrawNode事件没有被触发。可能是什么问题呢?这是我的代码:

SolidBrush greenBrush = new SolidBrush(Color.Green);
    SolidBrush redBrush = new SolidBrush(Color.Red);

    private void tvVouchers_DrawNode(object sender, DrawTreeNodeEventArgs e)
    {
        if (e.Node.IsSelected)
        {
            if (tvVouchers.Focused)
                e.Graphics.FillRectangle(greenBrush, e.Bounds);
            else
                e.Graphics.FillRectangle(redBrush, e.Bounds);
        }
        else
            e.Graphics.FillRectangle(Brushes.White, e.Bounds);

        e.Graphics.DrawRectangle(SystemPens.Control, e.Bounds);

        TextRenderer.DrawText(e.Graphics,
                               e.Node.Text,
                               e.Node.TreeView.Font,
                               e.Node.Bounds,
                               e.Node.ForeColor);
    }

1 个答案:

答案 0 :(得分:4)

确保将DrawNode属性设置为OwnerDrawText或OwnerDrawAll,然后将触发该事件。

OnwerDrawText:'TreeNode标签区域可以自定义。所有其他TreeNode元素都是自动绘制的。 OwnerDrawAll:'可以自定义整个TreeNode的外观。如果需要,必须手动绘制图标,复选框,加号和减号以及连接节点的线。'