2

你好!

我正在开发一个 VSTO Word Addin,它可以帮助用户替换给定文本中的某些单词。一个对话框引导用户完成替换。现在,当用户替换最后一个单词时,我想显示一个他完成的MessageBox。我正在努力解决时间问题。MessageBox 在最后一个替换可见之前出现。尽管如此,替换的代码行之前已执行。在单击 MessageBox 后,将按原样进行替换。

这是我用来替换单词的行:

using Microsoft.Office.Interop.Word;
...
Words wordsText = Globals.ThisAddIn.Application.ActiveDocument.Words;
...
wordsText[wordPos].Text = "[some text]";

这是我稍后显示的 MessageBox:

MessageBox.Show(this._owner, "[you are done text]", "[title]", MessageBoxButtons.OK, MessageBoxIcon.Information);

我注意到,如果我在 Visual Studio 中的上述行上设置断点,则会在 MessageBox 出现之前正确进行替换。我可以以某种方式强制更改Microsoft.Office.Interop.Word.Words立即应用吗?还有其他想法吗?

4

1 回答 1

0

我确实没有真正的解决方案,只有一些想法:

  • 也许你可以做System.Windows.Forms.Application.DoEvents();...
  • 或者创建一个新文档,再次删除它以强制 Winword 更新 Application.ActiveDocument.Words...

希望它有帮助,约尔格

于 2014-04-28T08:49:47.450 回答