C# Word Doc 如何在更新文档之前进行多项更改

C# Word Doc How To Make Multiple Changes Before Updating Document

我希望这很容易,但我似乎找不到它。我正在 Outlook VSTO 项目中使用 word 文档对象来修改位于隐藏键值之间的值。

IE [key_start] 文本 [key_end]

当他们在插件的下拉列表中进行选择时,我会为他们更改电子邮件正文中的文本。

为了完成这项工作

1) 我取消隐藏所有密钥

       Word.Document doc = Inspector.WordEditor as Word.Document;
       doc.Content.Font.Hidden = 0;

2) 然后找到我的键并在它们之间生成一个范围

        int start_pos = -1;
        int end_pos = -1;

        //SelectTextRange is a custom function to find range based on text
        ValueRange = Custom.WordDocument.SelectTextRange(doc, key_value_start);
        if (ValueRange != null) {
            start_pos = ValueRange.End;
        }

        ValueRange = Custom.WordDocument.SelectTextRange(doc, key_value_end);
        if (ValueRange != null) {
            end_pos = ValueRange.Start;
        }

3) 然后更新正文。

        if (start_pos > -1 && end_pos > -1) {
            ValueRange = doc.Range(start_pos, end_pos);
            ValueRange.Text = " new text goes here ";
        }

4) 然后再把我的钥匙藏起来

一切都很好,但是当更改在文档更新时级联时看起来有点俗气。看起来文档会根据每个命令进行更新,并且不会等到我的所有命令都完成。有没有一种方法可以防止文档提交更改,这样我就可以一次性完成所有这些操作,而不会让用户在这个过程发生时看到隐藏文本的闪烁?

YowE3K 做到了。再次感谢。

将此添加到我更改的开头

 doc.Application.ScreenUpdating = False

然后把这个加到最后

 doc.Application.ScreenUpdating = True

正是我所需要的。我的所有更改都在没有更新文档的情况下发生,然后一旦我设置 doc.Application.ScreenUpdating = True 它会绘制包含我所有更改的更新文档。