CommentRangeStart
Innehåll
[
Dölj
]CommentRangeStart class
Anger början på ett textområde som har en associerad kommentar.
För att lära dig mer, besökArbeta med kommentarer dokumentationsartikel.
public sealed class CommentRangeStart : Node
Konstruktörer
namn | Beskrivning |
---|---|
CommentRangeStart(DocumentBase, int) | Initierar en ny instans av den här klassen. |
Egenskaper
namn | Beskrivning |
---|---|
CustomNodeId { get; set; } | Anger anpassad nodidentifierare. |
virtual Document { get; } | Hämtar dokumentet som denna nod tillhör. |
Id { get; set; } | Anger identifieraren för kommentaren som denna region är länkad till. |
virtual IsComposite { get; } | Returersann om denna nod kan innehålla andra noder. |
NextSibling { get; } | Hämtar noden som följer direkt efter denna nod. |
override NodeType { get; } | ReturerCommentRangeStart . |
ParentNode { get; } | Hämtar den omedelbara föräldern till denna nod. |
PreviousSibling { get; } | Hämtar noden som omedelbart föregår denna nod. |
Range { get; } | Returnerar enRange objekt som representerar den del av ett dokument som finns i denna nod. |
Metoder
namn | Beskrivning |
---|---|
override Accept(DocumentVisitor) | Tar emot en besökare. |
Clone(bool) | Skapar en duplikat av noden. |
GetAncestor(NodeType) | Hämtar den första förfadern till den angivnaNodeType . |
GetAncestor(Type) | Hämtar den första förfadern till den angivna objekttypen. |
virtual GetText() | Hämtar texten för denna nod och alla dess underordnade noder. |
NextPreOrder(Node) | Hämtar nästa nod enligt algoritmen för förbeställningsträdtraversering. |
PreviousPreOrder(Node) | Hämtar föregående nod enligt algoritmen för trädtraversering i förbeställning. |
Remove() | Tar bort sig själv från föräldern. |
ToString(SaveFormat) | Exporterar nodens innehåll till en sträng i det angivna formatet. |
ToString(SaveOptions) | Exporterar nodens innehåll till en sträng med de angivna sparalternativen. |
Anmärkningar
För att skapa en kommentar förankrad i ett textområde måste du skapa enComment
och skapa sedanCommentRangeStart
ochCommentRangeEnd
och ställ in deras identifierare till sammaId
värde.
CommentRangeStart
är en inline-nivånod och kan bara vara underordnadParagraph
.
Exempel
Visar hur man skriver ut innehållet i alla kommentarer och deras kommentarintervall med hjälp av en dokumentbesökare.
public void CreateCommentsAndPrintAllInfo()
{
Document doc = new Document();
Comment newComment = new Comment(doc)
{
Author = "VDeryushev",
Initial = "VD",
DateTime = DateTime.Now
};
newComment.SetText("Comment regarding text.");
// Lägg till text i dokumentet, förvräng den i ett kommentarområde och lägg sedan till din kommentar.
Paragraph para = doc.FirstSection.Body.FirstParagraph;
para.AppendChild(new CommentRangeStart(doc, newComment.Id));
para.AppendChild(new Run(doc, "Commented text."));
para.AppendChild(new CommentRangeEnd(doc, newComment.Id));
para.AppendChild(newComment);
// Lägg till två svar till kommentaren.
newComment.AddReply("John Doe", "JD", DateTime.Now, "New reply.");
newComment.AddReply("John Doe", "JD", DateTime.Now, "Another reply.");
PrintAllCommentInfo(doc.GetChildNodes(NodeType.Comment, true));
}
/// <summary>
/// Itererar över varje kommentar på toppnivå och skriver ut dess kommentarintervall, innehåll och svar.
/// </summary>
private static void PrintAllCommentInfo(NodeCollection comments)
{
CommentInfoPrinter commentVisitor = new CommentInfoPrinter();
// Iterera över alla kommentarer på toppnivå. Till skillnad från kommentarer av svarstyp har kommentarer på toppnivå ingen överordnad text.
foreach (Comment comment in comments.Where(c => ((Comment)c).Ancestor == null).ToList())
{
// Först, besök början av kommentarsintervallet.
CommentRangeStart commentRangeStart = (CommentRangeStart)comment.PreviousSibling.PreviousSibling.PreviousSibling;
commentRangeStart.Accept(commentVisitor);
// Besök sedan kommentaren och eventuella svar som den kan innehålla.
comment.Accept(commentVisitor);
// Besök endast början av kommentaren.
comment.AcceptStart(commentVisitor);
// Besök endast slutet av kommentaren.
comment.AcceptEnd(commentVisitor);
foreach (Comment reply in comment.Replies)
reply.Accept(commentVisitor);
// Slutligen, besök slutet av kommentarsområdet och skriv sedan ut besökarens textinnehåll.
CommentRangeEnd commentRangeEnd = (CommentRangeEnd)comment.PreviousSibling;
commentRangeEnd.Accept(commentVisitor);
Console.WriteLine(commentVisitor.GetText());
}
}
/// <summary>
/// Skriver ut information och innehåll för alla kommentarer och kommentarintervall som finns i dokumentet.
/// </summary>
public class CommentInfoPrinter : DocumentVisitor
{
public CommentInfoPrinter()
{
mBuilder = new StringBuilder();
mVisitorIsInsideComment = 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)
{
if (mVisitorIsInsideComment) IndentAndAppendLine("[Run] \"" + run.Text + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när en CommentRangeStart-nod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitCommentRangeStart(CommentRangeStart commentRangeStart)
{
IndentAndAppendLine("[Comment range start] ID: " + commentRangeStart.Id);
mDocTraversalDepth++;
mVisitorIsInsideComment = true;
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när en CommentRangeEnd-nod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitCommentRangeEnd(CommentRangeEnd commentRangeEnd)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Comment range end] ID: " + commentRangeEnd.Id + "\n");
mVisitorIsInsideComment = false;
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när en kommentarnod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitCommentStart(Comment comment)
{
IndentAndAppendLine(
$"[Comment start] For comment range ID {comment.Id}, By {comment.Author} on {comment.DateTime}");
mDocTraversalDepth++;
mVisitorIsInsideComment = true;
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när besöket av en kommentarsnod i dokumentet avslutas.
/// </summary>
public override VisitorAction VisitCommentEnd(Comment comment)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Comment end]");
mVisitorIsInsideComment = 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 mVisitorIsInsideComment;
private int mDocTraversalDepth;
private readonly StringBuilder mBuilder;
}
Se även
- class Node
- namnutrymme Aspose.Words
- hopsättning Aspose.Words