c# - 选择后 TreeNodes 的前景色发生变化
问题描述
我有一个带有彩色节点的树视图,具体取决于它们的状态(保存的是绿色,禁用的是灰色,其余是默认值)。但是,只要选择了一个节点,它们的前景色就会重置为默认值
当使用简单的
node.ForeColor = Color.Gray;
.
我尝试使用像这样的 AfterSelect 事件重新着色节点(简化代码):
void wgtree_BeforeSelect(object sender, EventArgs e)
{
previousNode = wgtree.SelectedNode;
}
void wgtree_AfterSelect(object sender, TreeViewEventArgs e)
{
KeyValuePair<int, IBC> bc = (KeyValuePair<int, IBC>)tvBCTemplates.SelectedNode.Tag;
string nodeID = previousNode.Name;
if (Int32.TryParse(nodeID, out int wgid))
{
int bcid = GetBCID(wgid);
if (bcid == 0)
{
previousNode.ForeColor = Color.Black;
}
else if (bcid == bc.Key)
{
previousNode.ForeColor = Color.DarkGreen;
}
else
{
previousNode.ForeColor = Color.Gray;
}
}
}
但似乎 AfterSelect 对前一个节点着色还为时过早。
我想我可以遍历整个 TreeView,但这似乎不是很有效,因为用户可能会创建数百个节点。
解决方案
推荐阅读
- vba - VBA - 刷新除工作簿中的所有表
- javascript - 如何使用字段ID通过javascript在输入字段中添加占位符
- google-apps-script - 存档(仅复制内容)电子表格中的某些工作表
- anaconda - 无法在 Windows 上运行 anaconda 和 anaconda-prompt
- business-intelligence - 如何在 OBIEE 12c 中获得美元($)符号?
- android - 如何使用纬度和经度获取地址信息?
- c++ - 范围 v3 any_view & 常量
- c# - 转换为 void 返回委托的 AsyncLazy 匿名函数无法返回值
- java - 我明白了:线程“LWJGL 应用程序”com.badlogic.gdx.utils.SerializationException 中的异常:解析文件时出错:mar.tmx
- lua - lua中的多个for