Word中自定义“撤销记录”(UndoRecord)的使用

时间:2022-05-07 06:23:47

在Word中用户可以通过UndoRecord来记录一组动作,并显示在撤销菜单内。这样可以让用户一次性删除大量的操作。下面的代码是在Visual Studio 2010, Word 2010 下建立的一个示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
using Word = Microsoft.Office.Interop.Word;
using System.Windows.Forms;

namespace WordAddIn9
{
    public partial class Ribbon1
    {
        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {

        }

        private void button1_Click(object sender, RibbonControlEventArgs e)
        {
            Word.Application wdApp = Globals.ThisAddIn.Application;
            Word.Document wdDoc = wdApp.ActiveDocument;
            Word.UndoRecord ur = wdApp.UndoRecord;
            ur.StartCustomRecord("Test it");
            Word.Range range = wdApp.Selection.Range;
            range.InsertAfter("Test it!");
            range.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
            range.Select();
            range.Paragraphs.Add();
            range.Paragraphs.Add();
            int i = range.Paragraphs.Count;
            range.Paragraphs[i].Range.Text = "Hakuna Matata";
            MessageBox.Show(string.Format("{0}\n{1}", ur.CustomRecordLevel, ur.IsRecordingCustomRecord));
            ur.EndCustomRecord();
            MessageBox.Show(string.Format("{0}\n{1}", ur.CustomRecordLevel, ur.IsRecordingCustomRecord));
        }

        private void button2_Click(object sender, RibbonControlEventArgs e)
        {
        }
    }
}