BookmarkEnd

BookmarkEnd class

Rappresenta la fine di un segnalibro in un documento di Word.

public class BookmarkEnd : Node

Costruttori

Nome Descrizione
BookmarkEnd(DocumentBase, string) Inizializza una nuova istanza diBookmarkEnd classe.

Proprietà

Nome Descrizione
CustomNodeId { get; set; } Specifica l’identificatore del nodo personalizzato.
virtual Document { get; } Ottiene il documento a cui appartiene questo nodo.
virtual IsComposite { get; } Restituisce vero se questo nodo può contenere altri nodi.
Name { get; set; } Ottiene o imposta il nome del segnalibro.
NextSibling { get; } Ottiene il nodo immediatamente successivo a questo nodo.
override NodeType { get; } RestituisceBookmarkEnd .
ParentNode { get; } Ottiene il genitore immediato di questo nodo.
PreviousSibling { get; } Ottiene il nodo immediatamente precedente a questo nodo.
Range { get; } Restituisce a Gamma oggetto che rappresenta la parte di un documento contenuta in questo nodo.

Metodi

Nome Descrizione
override Accept(DocumentVisitor) Accetta un visitatore.
Clone(bool) Crea un duplicato del nodo.
GetAncestor(NodeType) Ottiene il primo predecessore dell’oggetto specificatoNodeType .
GetAncestor(Type) Ottiene il primo predecessore del tipo di oggetto specificato.
virtual GetText() Ottiene il testo di questo nodo e di tutti i suoi figli.
NextPreOrder(Node) Ottiene il nodo successivo in base all’algoritmo di attraversamento dell’albero di preordine.
PreviousPreOrder(Node) Ottiene il nodo precedente in base all’algoritmo di attraversamento dell’albero di preordine.
Remove() Si rimuove dal genitore.
ToString(SaveFormat) Esporta il contenuto del nodo in una stringa nel formato specificato.
ToString(SaveOptions) Esporta il contenuto del nodo in una stringa utilizzando le opzioni di salvataggio specificate.

Osservazioni

Un segnalibro completo in un documento di Word è costituito da aBookmarkStart e una corrispondenzaBookmarkEnd con lo stesso nome del segnalibro.

BookmarkStart eBookmarkEnd sono solo marcatori all’interno di un documento che specificano dove inizia e finisce il segnalibro.

Utilizzare ilBookmark class come una “facciata” per lavorare con un bookmark come un singolo oggetto.

Esempi

Mostra come aggiungere segnalibri e aggiornarne il contenuto.

public void CreateUpdateAndPrintBookmarks()
{
    // Crea un documento con tre segnalibri, quindi utilizza un'implementazione personalizzata del visitatore del documento per stamparne il contenuto.
    Document doc = CreateDocumentWithBookmarks(3);
    BookmarkCollection bookmarks = doc.Range.Bookmarks;

    PrintAllBookmarkInfo(bookmarks);

    // È possibile accedere ai segnalibri nella raccolta di segnalibri in base all'indice o al nome e i loro nomi possono essere aggiornati.
    bookmarks[0].Name = $"{bookmarks[0].Name}_NewName";
    bookmarks["MyBookmark_2"].Text = $"Updated text contents of {bookmarks[1].Name}";

    // Stampa di nuovo tutti i segnalibri per visualizzare i valori aggiornati.
    PrintAllBookmarkInfo(bookmarks);
}

/// <summary>
/// Crea un documento con un determinato numero di segnalibri.
/// </summary>
private static Document CreateDocumentWithBookmarks(int numberOfBookmarks)
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    for (int i = 1; i <= numberOfBookmarks; i++)
    {
        string bookmarkName = "MyBookmark_" + i;

        builder.Write("Text before bookmark.");
        builder.StartBookmark(bookmarkName);
        builder.Write($"Text inside {bookmarkName}.");
        builder.EndBookmark(bookmarkName);
        builder.Writeln("Text after bookmark.");
    }

    return doc;
}

/// <summary>
/// Usa un iteratore e un visitatore per stampare le informazioni di ogni segnalibro nella raccolta.
/// </summary>
private static void PrintAllBookmarkInfo(BookmarkCollection bookmarks)
{
    BookmarkInfoPrinter bookmarkVisitor = new BookmarkInfoPrinter();

    // Ottieni ogni segnalibro nella raccolta per accettare un visitatore che ne stamperà il contenuto.
    using (IEnumerator<Bookmark> enumerator = bookmarks.GetEnumerator())
    {
        while (enumerator.MoveNext())
        {
            Bookmark currentBookmark = enumerator.Current;

            if (currentBookmark != null)
            {
                currentBookmark.BookmarkStart.Accept(bookmarkVisitor);
                currentBookmark.BookmarkEnd.Accept(bookmarkVisitor);

                Console.WriteLine(currentBookmark.BookmarkStart.GetText());
            }
        }
    }
}

/// <summary>
/// Stampa il contenuto di ogni segnalibro visitato sulla console.
/// </summary>
public class BookmarkInfoPrinter : DocumentVisitor
{
    public override VisitorAction VisitBookmarkStart(BookmarkStart bookmarkStart)
    {
        Console.WriteLine($"BookmarkStart name: \"{bookmarkStart.Name}\", Contents: \"{bookmarkStart.Bookmark.Text}\"");
        return VisitorAction.Continue;
    }

    public override VisitorAction VisitBookmarkEnd(BookmarkEnd bookmarkEnd)
    {
        Console.WriteLine($"BookmarkEnd name: \"{bookmarkEnd.Name}\"");
        return VisitorAction.Continue;
    }
}

Guarda anche