看起来你无法阻止这种情况的发生。我查看了 TreeNode.BackColor 设置器的代码:
[SRDescription("TreeNodeBackColorDescr"), SRCategory("CatAppearance")]
public Color BackColor
{
get
{
if (this.propBag == null)
{
return Color.Empty;
}
return this.propBag.BackColor;
}
set
{
Color backColor = this.BackColor;
if (value.IsEmpty)
{
if (this.propBag != null)
{
this.propBag.BackColor = Color.Empty;
this.RemovePropBagIfEmpty();
}
if (!backColor.IsEmpty)
{
this.InvalidateHostTree();
}
}
else
{
if (this.propBag == null)
{
this.propBag = new OwnerDrawPropertyBag();
}
this.propBag.BackColor = value;
if (!value.Equals(backColor))
{
this.InvalidateHostTree();
}
}
}
}
每当 BackColor 更改时,都会在包含该节点的树上强制执行无效。同样,查看 InvalidateHostTree 函数,您无法设置任何标志来阻止刷新发生。