C# 应用SetWindowTheme后如何更改winforms树视图的颜色
我有一个windows窗体树视图。树视图的默认加减图标不会使用Windows 7样式更新 为了实现这一点,我使用了UXTheme.dll中的SetWindowThemeC# 应用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
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主题后,有没有办法更改颜色