c#如何保存树的展开状态
前提:每个node有唯一标识的东东,我的示例中展现的是文件夹,每个tooltip是文件/文件夹的路径。不同的唯一标识的话,把关于tooltip的相关方面更改即可
private List _listVisibleNodes = new List();
private string _lastSelectedNodePath= string.Empty;
///
/// 保存当前树的展现
///
private void GetTreeNodesStatus(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
if (node.IsExpanded && (!this._listVisibleNodes.Contains(node.ToolTipText)))
{
this._listVisibleNodes.Add(node.ToolTipText);
}
else if((!node.IsExpanded)&&this._listVisibleNodes.Contains(node.ToolTipText))
{
this._listVisibleNodes.Remove(node.ToolTipText);
}
if (node.IsSelected)
{
this._lastSelectedNodePath = node.FullPath;
}
GetTreeNodesStatus(node.Nodes);
}
}
///
/// 恢复原来的状态
///
private void SetTreeNodesStatus(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
if (this._listVisibleNodes.Contains(node.ToolTipText)&&!node.IsExpanded)
{
node.Expand();
}
if (node.ToolTipText == this._lastSelectedNodePath)
{
this.tvProject.SelectedNode = node;
}
SetTreeNodesStatus(node.Nodes);
}
}
///
/// 刷新树,调用
///
public void RefreshTree()
{
GetTreeNodesStatus(this.tvProject.Nodes);
this.tvProject.Nodes.Clear();
//清除之前的内容
//
//添加节点
//
SetTreeNodesStatus(this.tvProject.Nodes);
}
}
【c#如何保存树的展开状态】
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树
- Linux下面如何查看tomcat已经使用多少线程
- thinkphp|thinkphp 3.2 如何调用第三方类库