2013-04-23 73 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。 ..

希望它能幫助, 約爾格