Back to Devexpress

BookmarkNodeCollection Class

corelibraries-devexpress-dot-xtraprinting-b4280058.md

latest6.9 KB
Original Source

BookmarkNodeCollection Class

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

Declaration

csharp
public class BookmarkNodeCollection :
    Collection<BookmarkNode>,
    IBookmarkNodeCollection,
    IList,
    ICollection,
    IEnumerable
vb
Public Class BookmarkNodeCollection
    Inherits Collection(Of BookmarkNode)
    Implements IBookmarkNodeCollection,
               IList,
               ICollection,
               IEnumerable

Remarks

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.

Example

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.

csharp
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);
            }
        }
vb
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

Inheritance

Object Collection<BookmarkNode> BookmarkNodeCollection

See Also

BookmarkNodeCollection Members

BookmarkNode

DevExpress.XtraPrinting Namespace