【发布时间】:2010-12-07 08:20:09
【问题描述】:
我想创建一个自定义树视图,所以我继承了树视图类并创建了“CustomTreeView”类
我实现了多选概念..
用于选择节点,
node.BackColor = SystemColors.Highlight;
node.ForeColor = SystemColors.HighlightText;
我用了这些线...
但问题是当我将控件设置为禁用时(即启用=false),
所选节点不可见..
选择节点的任何其他解决方案???没有这个启用的问题?
编辑:这是选择节点时调用的完整函数:
private void ToggleNode(TreeNode node, bool bSelectNode)
{
if (bSelectNode)
{
m_SelectedNode = node;
if (!m_SelectedNodes.Contains(node))
m_SelectedNodes.Add(node);
node.BackColor = SystemColors.Highlight;
node.ForeColor = SystemColors.HighlightText;
}
else
{
m_SelectedNodes.Remove(node);
node.BackColor = this.BackColor;
node.ForeColor = this.ForeColor;
}
}
【问题讨论】:
-
你能告诉我们一些你的代码吗?从我理解您的描述的方式来看,我无法重现此问题。禁用的
TreeView控件仍然尊重为单个节点设置的自定义BackColor和ForeColor属性。 -
private void ToggleNode(TreeNode node, bool bSelectNode) { if (bSelectNode) { m_SelectedNode = node; if (!m_SelectedNodes.Contains(node)) m_SelectedNodes.Add(node); node.BackColor = SystemColors.Highlight; node.ForeColor = SystemColors.HighlightText; } else { m_SelectedNodes.Remove(node); node.BackColor = this.BackColor; node.ForeColor = this.ForeColor; } }
-
节点被选中时会调用is函数
-
并且当禁用了这个customtreeview的应用程序时..节点的文本变得不可见
-
您是否为您的
TreeView指定了自定义BackColor和/或ForeColor?这些可能与导致它们看起来不可见的突出显示颜色足够相似。对于我的TreeView使用标准的白色BackColor和黑色ForeColor,结合我系统的绿色Highlight和白色HighlightText颜色,我无法重现此行为。