private void Repopulate() { treeView1.Nodes.Clear(); if (null == _viewContext) { return; } var newNodes = new List <TreeNode>(); foreach (var group in _viewContext.ViewGroups) { var groupNode = new TreeNode(group.Label) { Name = group.Id.Name, Tag = group }; groupNode.SelectedImageIndex = groupNode.ImageIndex = indexImageFolder; foreach (var viewSpec in _viewContext.GetViewSpecList(group.Id).ViewSpecs) { if (null == _viewContext.GetViewInfo(group, viewSpec)) { continue; } var viewNode = new TreeNode(viewSpec.Name) { Name = viewSpec.Name }; int imageIndex = _viewContext.GetImageIndex(viewSpec); if (imageIndex >= 0) { imageIndex += indexFirstImage; } else { imageIndex = indexImageBlank; } if (imageIndex >= 0) { viewNode.SelectedImageIndex = viewNode.ImageIndex = imageIndex; } groupNode.Nodes.Add(viewNode); } newNodes.Add(groupNode); } treeView1.Nodes.AddRange(newNodes.ToArray()); treeView1.ExpandAll(); UpdateButtons(); }