2013-04-23 71 views
2

嗨!VSTO Word AddIn:MessageBox计时问题

我正在研究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立即应用更改吗?任何其他想法?

+0

你运行在一个线程中的任务?我无法重现这一点,对我来说工作得很好。也许你可以在'wordPos'上运行循环的完整代码? – etaiso 2014-04-28 09:01:24

回答

0

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

  • 也许你可以做System.Windows.Forms.Application.DoEvents(); ...
  • 或创建一个新的文件,再删除它,迫使对中Winword更新Application.ActiveDocument.Words。 ..

希望它能帮助, 约尔格