corelibraries-devexpress-dot-xtraprinting-b4280058.md
Represents a document map which contains a collection of all the bookmarks in a document.
Namespace : DevExpress.XtraPrinting
Assembly : DevExpress.Printing.v25.2.Core.dll
NuGet Package : DevExpress.Printing.Core
public class BookmarkNodeCollection :
Collection<BookmarkNode>,
IBookmarkNodeCollection,
IList,
ICollection,
IEnumerable
Public Class BookmarkNodeCollection
Inherits Collection(Of BookmarkNode)
Implements IBookmarkNodeCollection,
IList,
ICollection,
IEnumerable
Each bookmark in the BookmarkNodeCollection collection is represented by an BookmarkNode object and can be added to the collection by calling the collection’s Add method. Note that if a brick to which the bookmark refers is split across two or more pages, then the bookmark will reference the part which is printed on the page returned via the BookmarkNode.PageIndex property.
This example illustrates how to make Print Preview display a Document Map listing all bookmarks assigned to a Document‘s elements.
The following code adds five bricks to the Detail section of a document and then assigns bookmarks to each brick.
Note that the Document Map button is automatically enabled in Print Preview when a displayed document has any bookmarks.
using System;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraPrinting;
using DevExpress.XtraPrinting.Native;
// ...
private void button1_Click(object sender, EventArgs e) {
// Create a new Printing System.
PrintingSystem ps = new PrintingSystem();
// Create a new link and add a handler to its CreateDetailArea event.
Link link = new Link(ps);
link.CreateDetailArea += new CreateAreaEventHandler(OnDocumentCreated);
// Create a document for the link.
link.CreateDocument();
// Create a document's map.
CreateDocumentMap(ps.Document);
// Show the report's preview.
link.ShowPreview();
// Remove the handler for the CreateDetailArea event.
link.CreateDetailArea -= new CreateAreaEventHandler(OnDocumentCreated);
}
private void OnDocumentCreated(object sender, CreateAreaEventArgs e) {
// Draw 5 bricks on a document.
for (int i = 0; i < 5; i++) {
TextBrick brick = new TextBrick();
brick.Text = "Item #" + (i + 1).ToString();
brick.BackColor = Color.Yellow;
brick.Rect = new Rectangle(10, i * 100, 100, 50);
e.Graph.DrawBrick(brick, brick.Rect);
}
}
private void CreateDocumentMap(Document document) {
// Create a collection of 'Page and Brick' pairs.
BrickPagePairCollection pairs = new BrickPagePairCollection();
// Create an enumerator of all document bricks.
DocumentBrickEnumerator en = new DocumentBrickEnumerator(document);
// Add the 'Brick-Page' pairs for all document bricks.
while (en.MoveNext()) {
pairs.Add(BrickPagePair.Create(en.Brick, en.Page));
}
// Add bookmarks for all pairs to the document's map.
foreach (BrickPagePair pair in pairs) {
Page page = document.Pages[pair.PageIndex];
Brick brick = page.GetBrickByIndices(pair.BrickIndices) as Brick;
string BrickText = ((TextBrick)brick).Text;
BookmarkNode mapNode = new BookmarkNode(BrickText, brick, page);
document.BookmarkNodes.Add(mapNode);
}
}
Imports System.Drawing
Imports System.Windows.Forms
Imports DevExpress.XtraPrinting
Imports DevExpress.XtraPrinting.Native
' ...
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Create a new Printing System.
Dim ps As New PrintingSystem()
' Create a new link and add a handler to its CreateDetailArea event.
Dim link As New Link(ps)
AddHandler link.CreateDetailArea, AddressOf OnDocumentCreated
' Create a document for the link.
link.CreateDocument()
' Create a document's map.
CreateDocumentMap(ps.Document)
' Show the report's preview.
link.ShowPreview()
End Sub
Private Sub OnDocumentCreated(ByVal sender As Object, ByVal e As CreateAreaEventArgs)
' Draw 5 bricks on a document.
For i As Integer = 0 To 4
Dim brick As New TextBrick()
brick.Text = "Item #" & (i + 1).ToString()
brick.BackColor = Color.Yellow
brick.Rect = New Rectangle(10, i * 100, 100, 50)
e.Graph.DrawBrick(brick, brick.Rect)
Next i
End Sub
Private Sub CreateDocumentMap(ByVal document As Document)
' Create a collection of 'Page and Brick' pairs.
Dim Pairs As New BrickPagePairCollection()
' Create an enumerator of all document bricks.
Dim en As New DocumentBrickEnumerator(document)
' Add the 'Brick-Page' pairs for all document bricks.
While en.MoveNext()
Pairs.Add(BrickPagePair.Create(en.Brick, en.Page))
End While
' Add bookmarks for all pairs to the document's map.
Dim Pair As BrickPagePair
For Each Pair In Pairs
Dim page As Page = document.Pages(Pair.PageIndex)
Dim brick As Brick = CType(page.GetBrickByIndices(Pair.BrickIndices), Brick)
Dim BrickText As String = CType(brick, TextBrick).Text
Dim mapNode As New BookmarkNode(BrickText, brick, page)
document.BookmarkNodes.Add(mapNode)
Next
End Sub
Object Collection<BookmarkNode> BookmarkNodeCollection
See Also