void DisplayUnusedAcronyms(bool expand) //... as assessed in CheckForUnusedAcronyms { treeAcronyms.BeginUnboundLoad(); //store which nodes are expanded, the focused node and the first visible node List <string> expandedNodesIDs = new List <string>(); string focusedNodeID = string.Empty; string topVisibleNodeID = string.Empty; AcronymManager.StoreNodeStates(treeAcronyms, ref expandedNodesIDs, ref focusedNodeID, ref topVisibleNodeID); treeAcronyms.Nodes.Clear(); TreeListNode typeNode = null; TreeListNode levelNode = null; foreach (VarConfig.AcronymRow acroRow in _acronymsToDisplay) { VarConfig.AcronymTypeRow typeRow = acroRow.AcronymLevelRow.AcronymTypeRow; if (typeNode == null || !(typeNode.Tag as VarConfig.AcronymTypeRow).Equals(typeRow)) { typeNode = treeAcronyms.AppendNode(null, null); typeNode.SetValue(colAcronym, typeRow.LongName.ToUpper() + " (" + typeRow.ShortName.ToUpper() + ")"); typeNode.Tag = typeRow; } VarConfig.AcronymLevelRow levelRow = acroRow.AcronymLevelRow; if (levelNode == null || !(levelNode.Tag as VarConfig.AcronymLevelRow).Equals(levelRow)) { levelNode = treeAcronyms.AppendNode(null, typeNode); levelNode.SetValue(colAcronym, levelRow.Name); levelNode.Tag = levelRow; } TreeListNode acroNode = treeAcronyms.AppendNode(null, levelNode); acroNode.SetValue(colAcronym, acroRow.Description + " (" + acroRow.Name.ToUpper() + ")"); acroNode.SetValue(colDeleteAcronyms, true); acroNode.Tag = acroRow; } //restore collapse/expanded, focused and first visible node states AcronymManager.RestoreNodeStates(treeAcronyms, expandedNodesIDs, focusedNodeID, topVisibleNodeID); treeAcronyms.EndUnboundLoad(); colAcronym.BestFit(); colDeleteAcronyms.BestFit(); if (expand) { treeAcronyms.ExpandAll(); //initially, i.e. if called from btnLoad_Click, expand all nodes } }