Copying format restarts a custom undo record

Alexey Andrushkevich 0 Reputation points
2024-08-05T18:30:19.25+00:00

I'm developing a Word add-in using VSTO and faced an issue with a custom UndoRecord. The problem appears when I use the CopyFormat method between the StartCustomRecord and EndCustomRecord method calls. Executing CopyFormat causes the existing UndoRecord to close and start a new one. This results in an additional record appearing in the undo stack, which is not the desired behaviour.

Here is a simplified version of the method I'm using:

private static void PasteRtf(string rtf, Range sourceRange, Range targetRange)
{
    var undoRecord = sourceRange.Application.UndoRecord;
    try
    {
        undoRecord.StartCustomRecord("Custom record");

        targetRange.InsertParagraphBefore();
        targetRange = targetRange.Paragraphs.First.Range;

        System.Windows.Clipboard.Clear();
        System.Windows.Clipboard.SetData(System.Windows.DataFormats.Rtf, rtf);
        targetRange.Paste();

        sourceRange.Select();
        sourceRange.Application.Selection.CopyFormat();
        targetRange.Select();
        targetRange.Application.Selection.PasteFormat();
    }
    finally
    {
        undoRecord.EndCustomRecord();
    }
}

In the above code, StartCustomRecord is called at the beginning, and EndCustomRecord is called at the end. However, after executing CopyFormat, it seems that a new UndoRecord is created, which results in multiple undo actions for a single operation.

My questions are:

  1. Why does CopyFormat cause a new UndoRecord to be created?
  2. How can I prevent this behavior and ensure that only one undo record is created for the entire operation?

Any insights or suggestions would be greatly appreciated. Thanks in advance!

Word
Word
A family of Microsoft word processing software products for creating web, email, and print documents.
887 questions
Office Development
Office Development
Office: A suite of Microsoft productivity software that supports common business tasks, including word processing, email, presentations, and data management and analysis.Development: The process of researching, productizing, and refining new or existing technologies.
4,014 questions
0 comments No comments
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.