Accept
BuildingBlock.Accept method
Accepte un visiteur.
public override bool Accept(DocumentVisitor visitor)
Paramètre | Taper | La description |
---|---|---|
visitor | DocumentVisitor | Le visiteur qui visitera les nœuds. |
Return_Value
Vrai si tous les nœuds ont été visités ; faux siDocumentVisitor
arrêté l’opération avant de visiter tous les nœuds.
Remarques
Énumère ce nœud et tous ses enfants. Chaque nœud appelle une méthode correspondante surDocumentVisitor
.
Pour plus d’informations, consultez le modèle de conception Visiteur.
AppelsVisitBuildingBlockStart
, puis appelle Accept
pour tous les nœuds enfants de ce bloc de construction, puis appelle VisitBuildingBlockEnd
.
Remarque : Un nœud de bloc de construction et ses enfants ne sont pas visités lorsque vous exécutez un visiteur sur unDocument
. Si vous souhaitez exécuter un bloc de construction Visiteur sur a , vous devez exécuter le visiteur surGlossaryDocument
or appelAccept
.
Exemples
Montre comment ajouter un bloc de construction personnalisé à un document.
public void CreateAndInsert()
{
// Le glossaire d'un document stocke les éléments de base.
Document doc = new Document();
GlossaryDocument glossaryDoc = new GlossaryDocument();
doc.GlossaryDocument = glossaryDoc;
// Créez un bloc de construction, nommez-le, puis ajoutez-le au document glossaire.
BuildingBlock block = new BuildingBlock(glossaryDoc)
{
Name = "Custom Block"
};
glossaryDoc.AppendChild(block);
// Tous les nouveaux GUID de blocs de construction ont la même valeur zéro par défaut et nous pouvons leur attribuer une nouvelle valeur unique.
Assert.AreEqual("00000000-0000-0000-0000-000000000000", block.Guid.ToString());
block.Guid = Guid.NewGuid();
// Les propriétés suivantes catégorisent les blocs de construction
// dans le menu auquel nous pouvons accéder dans Microsoft Word via "Insérer" -> "Pièces rapides" -> "Organisateur de blocs de construction".
Assert.AreEqual("(Empty Category)", block.Category);
Assert.AreEqual(BuildingBlockType.None, block.Type);
Assert.AreEqual(BuildingBlockGallery.All, block.Gallery);
Assert.AreEqual(BuildingBlockBehavior.Content, block.Behavior);
// Avant de pouvoir ajouter cette brique à notre document, nous devrons lui donner du contenu,
// ce que nous ferons en utilisant un visiteur de document. Ce visiteur définira également une catégorie, une galerie et un comportement.
BuildingBlockVisitor visitor = new BuildingBlockVisitor(glossaryDoc);
block.Accept(visitor);
// Nous pouvons accéder au bloc que nous venons de créer à partir du document glossaire.
BuildingBlock customBlock = glossaryDoc.GetBuildingBlock(BuildingBlockGallery.QuickParts,
"My custom building blocks", "Custom Block");
// Le bloc lui-même est une section qui contient le texte.
Assert.AreEqual($"Text inside {customBlock.Name}\f", customBlock.FirstSection.Body.FirstParagraph.GetText());
Assert.AreEqual(customBlock.FirstSection, customBlock.LastSection);
// Maintenant, nous pouvons l'insérer dans le document en tant que nouvelle section.
doc.AppendChild(doc.ImportNode(customBlock.FirstSection, true));
// Nous pouvons également le trouver dans l'organisateur de blocs de construction de Microsoft Word et le placer manuellement.
doc.Save(ArtifactsDir + "BuildingBlocks.CreateAndInsert.dotx");
}
/// <summary>
/// Configure un bloc de construction visité à insérer dans le document en tant que partie rapide et ajoute du texte à son contenu.
/// </summary>
public class BuildingBlockVisitor : DocumentVisitor
{
public BuildingBlockVisitor(GlossaryDocument ownerGlossaryDoc)
{
mBuilder = new StringBuilder();
mGlossaryDoc = ownerGlossaryDoc;
}
public override VisitorAction VisitBuildingBlockStart(BuildingBlock block)
{
// Configurez le bloc de construction en tant que partie rapide et ajoutez les propriétés utilisées par Building Blocks Organizer.
block.Behavior = BuildingBlockBehavior.Paragraph;
block.Category = "My custom building blocks";
block.Description =
"Using this block in the Quick Parts section of word will place its contents at the cursor.";
block.Gallery = BuildingBlockGallery.QuickParts;
// Ajoute une section avec du texte.
// L'insertion du bloc dans le document ajoutera cette section avec ses nœuds enfants à l'emplacement.
Section section = new Section(mGlossaryDoc);
block.AppendChild(section);
block.FirstSection.EnsureMinimum();
Run run = new Run(mGlossaryDoc, "Text inside " + block.Name);
block.FirstSection.Body.FirstParagraph.AppendChild(run);
return VisitorAction.Continue;
}
public override VisitorAction VisitBuildingBlockEnd(BuildingBlock block)
{
mBuilder.Append("Visited " + block.Name + "\r\n");
return VisitorAction.Continue;
}
private readonly StringBuilder mBuilder;
private readonly GlossaryDocument mGlossaryDoc;
}
Voir également
- class DocumentVisitor
- class BuildingBlock
- espace de noms Aspose.Words.BuildingBlocks
- Assemblée Aspose.Words