我希望这很容易,但我似乎无法找到它。我正在使用Outlook VSTO项目中的word文档对象来修改隐藏键值之间的值。
IE [key_start] text [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)然后再次隐藏我的钥匙。
一切都很有效,但当更新中的更改通过文档级联时,它看起来有点俗气。看起来文档更新了每个命令,并且不会等到我的所有命令都完成。有没有办法阻止文档提交更改,以便我可以一次性完成所有操作,并且在此过程发生时用户不会看到隐藏文本的闪烁?
答案 0 :(得分:1)
YowE3K钉了它。再次感谢你。
将此添加到我的更改开头
doc.Application.ScreenUpdating = False
然后将其添加到最后
doc.Application.ScreenUpdating = True
完全符合我的需要。我的所有更改都在没有文档更新的情况下发生,然后在设置doc.Application.ScreenUpdating = True
后,它会使用我的所有更改来绘制更新的文档。