VisitEditableRangeEnd
Innehåll
[
Dölj
]DocumentVisitor.VisitEditableRangeEnd method
Anropas när slutet av ett redigerbart område påträffas i dokumentet.
public virtual VisitorAction VisitEditableRangeEnd(EditableRangeEnd editableRangeEnd)
Parameter | Typ | Beskrivning |
---|---|---|
editableRangeEnd | EditableRangeEnd | Objektet som besöks. |
Returvärde
EnVisitorAction
värde som anger hur uppräkningen ska fortsätta.
Exempel
Visar hur man skriver ut nodstrukturen för varje redigerbart område i ett dokument.
public void EditableRangeToText()
{
Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
EditableRangeStructurePrinter visitor = new EditableRangeStructurePrinter();
// När vi får en sammansatt nod att acceptera en dokumentbesökare, besöker besökaren den accepterande noden,
// och sedan korsar alla nodens barn på ett djup-först-sätt.
// Besökaren kan läsa och ändra varje besökt nod.
doc.Accept(visitor);
Console.WriteLine(visitor.GetText());
}
/// <summary>
/// Går igenom en nods icke-binära träd av undernoder.
/// Skapar en karta i form av en sträng av alla påträffade EditableRange-noder och deras undernoder.
/// </summary>
public class EditableRangeStructurePrinter : DocumentVisitor
{
public EditableRangeStructurePrinter()
{
mBuilder = new StringBuilder();
mVisitorIsInsideEditableRange = false;
}
/// <summary>
/// Hämtar klartexten från dokumentet som besökaren samlade in.
/// </summary>
public string GetText()
{
return mBuilder.ToString();
}
/// <summary>
/// Anropas när en Run-nod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
// Vi vill skriva ut innehållet i körningar, men bara om de är inuti former, som det skulle vara i fallet med textrutor
if (mVisitorIsInsideEditableRange) IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när en EditableRange-nod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitEditableRangeStart(EditableRangeStart editableRangeStart)
{
IndentAndAppendLine("[EditableRange start] ID: " + editableRangeStart.Id + " Owner: " +
editableRangeStart.EditableRange.SingleUser);
mDocTraversalDepth++;
mVisitorIsInsideEditableRange = true;
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när besöket av en EditableRange-nod är avslutat.
/// </summary>
public override VisitorAction VisitEditableRangeEnd(EditableRangeEnd editableRangeEnd)
{
mDocTraversalDepth--;
IndentAndAppendLine("[EditableRange end]");
mVisitorIsInsideEditableRange = false;
return VisitorAction.Continue;
}
/// <summary>
/// Lägg till en rad i StringBuilder och dra in den beroende på hur djupt inne i dokumentträdet besökaren befinner sig.
/// </summary>
/// <param namn="text"></param>
private void IndentAndAppendLine(string text)
{
for (int i = 0; i < mDocTraversalDepth; i++) mBuilder.Append("| ");
mBuilder.AppendLine(text);
}
private bool mVisitorIsInsideEditableRange;
private int mDocTraversalDepth;
private readonly StringBuilder mBuilder;
}
Se även
- enum VisitorAction
- class EditableRangeEnd
- class DocumentVisitor
- namnutrymme Aspose.Words
- hopsättning Aspose.Words