C# 应用SetWindowTheme后如何更改winforms树视图的颜色

C# 应用SetWindowTheme后如何更改winforms树视图的颜色,c#,winforms,treeview,C#,Winforms,Treeview,我有一个windows窗体树视图。树视图的默认加减图标不会使用Windows 7样式更新 为了实现这一点,我使用了UXTheme.dll中的SetWindowTheme SetWindowTheme(tvwRoot.Handle, "explorer", null); 应用此选项后,我无法更改treeview的selectednode颜色。 我试了以下方法 private void tvwRoot_MouseDown(object sender, System.Windows.Forms.Mo

我有一个windows窗体树视图。树视图的默认加减图标不会使用Windows 7样式更新

为了实现这一点,我使用了UXTheme.dll中的SetWindowTheme

SetWindowTheme(tvwRoot.Handle, "explorer", null);
应用此选项后,我无法更改treeview的selectednode颜色。 我试了以下方法

private void tvwRoot_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {

        if (tvwRoot.GetNodeAt(e.Location) != null)
        {
            tvwRoot.SelectedNode = tvwRoot.GetNodeAt(e.Location);

            tvwRoot.SelectedNode.BackColor = System.Drawing.Color.FromArgb(51, 153, 255);
            tvwRoot.SelectedNode.ForeColor = System.Drawing.Color.White;

            if (e.Button == MouseButtons.Right)
            {
                nodRightClick = tvwRoot.SelectedNode;
                blnRightClick = true;
                pntLocation = e.Location;
            }
        }
        else
        {
            tvwRoot.SelectedNode = null;
            nodRightClick = null;
        }

    }

    private void tvwRoot_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        if (tvwRoot.SelectedNode != null)
        {
            if (tnPreviousSelected != null && !tnPreviousSelected.FullPath.Equals(tvwRoot.SelectedNode.FullPath))
                tnPreviousSelected = tvwRoot.SelectedNode;
            else if (tnPreviousSelected == null)
                tnPreviousSelected = tvwRoot.SelectedNode;


            tvwRoot.SelectedNode.BackColor = System.Drawing.Color.FromArgb(51, 153, 255);
            tvwRoot.SelectedNode.ForeColor = System.Drawing.Color.White;
        }

    }

    private void tvwRoot_AfterSelect(object sender, TreeViewEventArgs e)
    {
        if (tnPreviousSelected != null && !tnPreviousSelected.FullPath.Equals(tvwRoot.SelectedNode.FullPath))
        {
            tnPreviousSelected.BackColor = tvwRoot.BackColor;
            tnPreviousSelected.ForeColor = tvwRoot.ForeColor;
            tnPreviousSelected = null;
        }

        if (tvwRoot.SelectedNode != null)
        {
            if (tnPreviousSelected != null && !tnPreviousSelected.FullPath.Equals(tvwRoot.SelectedNode.FullPath))
                tnPreviousSelected = tvwRoot.SelectedNode;
            else if (tnPreviousSelected == null)
                tnPreviousSelected = tvwRoot.SelectedNode;

            tvwRoot.SelectedNode.BackColor = System.Drawing.Color.FromArgb(51, 153, 255);
            tvwRoot.SelectedNode.ForeColor = System.Drawing.Color.White;
        }
    }
但是这样,当焦点从树视图中移除后,颜色就会出现在树视图上。 应用SetWindow主题后,有没有办法更改颜色