void TryScrollToComment(LayoutElement element) { LayoutComment layoutComment = element as LayoutComment; if (layoutComment == null) { layoutComment = element.GetParentByType <LayoutComment>(); } if (layoutComment != null) { Comment comment = layoutComment.GetDocumentComment(); ScrollToPosition(comment.Range.Start); } }
void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (!(e.Node.IsSelected) || e.Node.Tag == null) { return; } // Rebuild the tree if required. rebuild = true; richEditControl1.Document.ChangeActiveDocument(richEditControl1.Document); LayoutElement element = layoutTreeDictionary[e.Node]; RangedLayoutElement rangedElement = element as RangedLayoutElement; // Select a range or scroll to a document position, according to the type of the layout element. if ((ContentDisplayAction)e.Node.Tag == ContentDisplayAction.ScrollTo) { LayoutPage page = element.GetParentByType <LayoutPage>(); LayoutPageArea nearestPageArea = page.PageAreas[0]; if ((element.Type == LayoutType.Header) || (element.GetParentByType <LayoutHeader>() != null)) { ScrollToPosition(nearestPageArea.Range.Start); } if ((element.Type == LayoutType.Footer) || (element.GetParentByType <LayoutFooter>() != null)) { ScrollToPosition(nearestPageArea.Range.Start + nearestPageArea.Range.Length); } LayoutFloatingObject layoutFloatingObject = element as LayoutFloatingObject; if (layoutFloatingObject != null) { FloatingObjectAnchorBox anchor = layoutFloatingObject.AnchorBox; ScrollToPosition(anchor.Range.Start); richEditControl1.Document.Selection = richEditControl1.Document.CreateRange(anchor.Range.Start, anchor.Range.Length); } LayoutComment layoutComment = element as LayoutComment; if (layoutComment != null) { Comment comment = layoutComment.GetDocumentComment(); ScrollToPosition(comment.Range.Start.ToInt()); } LayoutTextBox textBox = element.GetParentByType <LayoutTextBox>(); if (textBox != null) { // Do not rebuild the tree. rebuild = false; ScrollToPosition(textBox.AnchorBox.Range.Start); SubDocument doc = richEditControl1.DocumentLayout.BeginUpdateDocument(textBox); richEditControl1.Document.ChangeActiveDocument(doc); richEditControl1.Document.Selection = doc.CreateRange(rangedElement.Range.Start, rangedElement.Range.Length); richEditControl1.DocumentLayout.EndUpdateDocument(doc); } } else { if (rangedElement == null) { return; } ScrollToPosition(rangedElement.Range.Start); richEditControl1.Document.Selection = richEditControl1.Document.CreateRange(rangedElement.Range.Start, rangedElement.Range.Length); } }