/// <summary> /// Links the specified tree view to this tree view. Whenever either treeview /// scrolls, the other will scroll too. /// </summary> /// <param name="treeView">The TreeView to link.</param> public void AddLinkedTreeView(MyTreeView treeView) { if (treeView == this) { throw new ArgumentException("Cannot link a TreeView to itself!", "treeView"); } if (!linkedTreeViews.Contains(treeView)) { //add the treeview to our list of linked treeviews linkedTreeViews.Add(treeView); //add this to the treeview's list of linked treeviews treeView.AddLinkedTreeView(this); //make sure the TreeView is linked to all of the other TreeViews that this TreeView is linked to for (int i = 0; i < linkedTreeViews.Count; i++) { //get the linked treeview var linkedTreeView = linkedTreeViews[i]; //link the treeviews together if (linkedTreeView != treeView) { linkedTreeView.AddLinkedTreeView(treeView); } } } }
private void compareTreeViewStrings(MyTreeView newTreeView, string newText, MyTreeView oldTreeView, string oldText) { ISideBySideDiffBuilder diffBuilder = new SideBySideDiffBuilder(new Differ()); SideBySideDiffModel sideBySideModel = diffBuilder.BuildDiffModel(oldText, newText); newTreeView.Nodes.Clear(); oldTreeView.Nodes.Clear(); TreeNode newParentNode = newTreeView.Nodes.Add(sideBySideModel.NewText.Lines[0].Text); TreeNode oldParentNode = oldTreeView.Nodes.Add(sideBySideModel.OldText.Lines[0].Text); colorTreeView(newParentNode.FullPath, newParentNode, sideBySideModel.NewText.Lines, sideBySideModel.OldText.Lines, 1, true); colorTreeView(oldParentNode.FullPath, oldParentNode, sideBySideModel.OldText.Lines, sideBySideModel.NewText.Lines, 1, false); newTreeView.AddLinkedTreeView(oldTreeView); }