Revision

Revision class

Rappresenta una revisione (modifica tracciata) in un nodo o stile di documento. UtilizzoRevisionType per controllare il tipo di questa revisione.

Per saperne di più, visita ilTraccia le modifiche in un documento articolo di documentazione.

public class Revision

Proprietà

NomeDescrizione
Author { get; set; }Ottiene o imposta l’autore di questa revisione. Non può essere una stringa vuota onull .
DateTime { get; set; }Ottiene o imposta la data/ora di questa revisione.
Group { get; }Ottiene il gruppo di revisione. Restituiscenull se la revisione non appartiene a nessun gruppo.
ParentNode { get; }Ottiene il nodo padre immediato (proprietario) di questa revisione. Questa proprietà funzionerà per qualsiasi tipo di revisione diverso daStyleDefinitionChange .
ParentStyle { get; }Ottiene lo stile padre immediato (proprietario) di questa revisione. Questa proprietà funzionerà solo perStyleDefinitionChange tipo di revisione.
RevisionType { get; }Ottiene il tipo di questa revisione.

Metodi

NomeDescrizione
Accept()Accetta questa revisione.
Reject()Rifiuta questa revisione.

Esempi

Mostra come lavorare con le revisioni in un documento.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// La normale modifica del documento non è considerata una revisione.
builder.Write("This does not count as a revision. ");

Assert.IsFalse(doc.HasRevisions);

// Per registrare le nostre modifiche come revisioni, dobbiamo dichiarare un autore e poi iniziare a monitorarle.
doc.StartTrackRevisions("John Doe", DateTime.Now);

builder.Write("This is revision #1. ");

Assert.IsTrue(doc.HasRevisions);
Assert.AreEqual(1, doc.Revisions.Count);

// Questo flag corrisponde all'opzione "Revisione" -> "Monitoraggio" -> "Revisioni" in Microsoft Word.
// Il metodo "StartTrackRevisions" non ne influenza il valore,
// e il documento tiene traccia delle revisioni a livello di programmazione nonostante abbia il valore "false".
// Se apriamo questo documento utilizzando Microsoft Word, le revisioni non verranno monitorate.
Assert.IsFalse(doc.TrackRevisions);

// Abbiamo aggiunto del testo utilizzando il generatore di documenti, quindi la prima revisione è una revisione di tipo inserimento.
Revision revision = doc.Revisions[0];
Assert.AreEqual("John Doe", revision.Author);
Assert.AreEqual("This is revision #1. ", revision.ParentNode.GetText());
Assert.AreEqual(RevisionType.Insertion, revision.RevisionType);
Assert.AreEqual(revision.DateTime.Date, DateTime.Now.Date);
Assert.AreEqual(doc.Revisions.Groups[0], revision.Group);

// Rimuovi un'esecuzione per creare una revisione di tipo eliminazione.
doc.FirstSection.Body.FirstParagraph.Runs[0].Remove();

// Aggiungendo una nuova revisione, questa viene posizionata all'inizio della raccolta delle revisioni.
Assert.AreEqual(RevisionType.Deletion, doc.Revisions[0].RevisionType);
Assert.AreEqual(2, doc.Revisions.Count);

// Le revisioni inserite vengono visualizzate nel corpo del documento anche prima che accettiamo/rifiutiamo la revisione.
// Rifiutando la revisione, i relativi nodi verranno rimossi dal corpo. Al contrario, i nodi che la compongono elimineranno le revisioni.
// rimangono nel documento finché non accettiamo la revisione.
Assert.AreEqual("This does not count as a revision. This is revision #1.", doc.GetText().Trim());

// L'accettazione della revisione di eliminazione rimuoverà il suo nodo padre dal testo del paragrafo
// e quindi rimuovere la revisione della raccolta stessa.
doc.Revisions[0].Accept();

Assert.AreEqual(1, doc.Revisions.Count);
Assert.AreEqual("This is revision #1.", doc.GetText().Trim());

builder.Writeln("");
builder.Write("This is revision #2.");

// Ora sposta il nodo per creare un tipo di revisione mobile.
Node node = doc.FirstSection.Body.Paragraphs[1];
Node endNode = doc.FirstSection.Body.Paragraphs[1].NextSibling;
Node referenceNode = doc.FirstSection.Body.Paragraphs[0];

while (node != endNode)
{
    Node nextNode = node.NextSibling;
    doc.FirstSection.Body.InsertBefore(node, referenceNode);
    node = nextNode;
}

Assert.AreEqual(RevisionType.Moving, doc.Revisions[0].RevisionType);
Assert.AreEqual(8, doc.Revisions.Count);
Assert.AreEqual("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.GetText().Trim());

// La revisione in movimento è ora all'indice 1. Rifiutare la revisione per eliminarne il contenuto.
doc.Revisions[1].Reject();

Assert.AreEqual(6, doc.Revisions.Count);
Assert.AreEqual("This is revision #1. \rThis is revision #2.", doc.GetText().Trim());

Guarda anche