treeview 事件 DrawNode 未触发

问题描述 投票:0回答:2

即使所选项目未获得焦点,我也想更改树视图中所选项目的颜色。我正在使用 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);
    }
c# treeview
2个回答
5
投票

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

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


0
投票

试试这个:

myTreeView.DrawMode = TreeViewDrawMode.OwnerDrawText;
    myTreeView.DrawNode += 
        new DrawTreeNodeEventHandler(myTreeView_DrawNode);
© www.soinside.com 2019 - 2024. All rights reserved.