2017-03-19 11 views
0

使用VSTO和C#,我試圖讓Outlook突出顯示電子郵件正文中的特定單詞。到目前爲止,我已經能夠使用下面的代碼來完成這件事:C#VSTO:突出顯示電子郵件正文文本 - ClearHitHighlight()不清除?

 Outlook.MailItem mailItem = this.inspector.CurrentItem as Outlook.MailItem; 

     if (inspector.IsWordMail()) 
     { 
      var outlookWordDocument = inspector.WordEditor as Word.Document; 
      if (outlookWordDocument == null || outlookWordDocument.Application.Selection == null) 
      { return; } 

      var wordRange = outlookWordDocument.Application.Selection.Range; 

      Word.Find find_highlight = wordRange.Find; 
      find_highlight.HitHighlight("apples", Word.WdColor.wdColorDarkRed); 
      find_highlight.ClearHitHighlight(); // trying to clear for testing purposes, but does nothing 
     } 

我的問題是,ClearHitHighlight()函數不清除任何東西。我可以清楚的唯一方法是如果我之後再進行另一次搜索。請參閱下面的評論:

find_highlight.HitHighlight("apples"); //highlights "apples" 
find_highlight.HitHighlight("oranges"); //highlights "oranges" too 
find_highlight.ClearHitHighlight(); //does nothing 
find_highlight.HitHighlight("pears"); //clears previous highlights, adds pears 

作爲替代方案,我可以強調通過格式化電子郵件的實際正文文本,但這種HitHighlight功能似乎更合適 - 如果我能想出如何清除標記完成後!

任何幫助,將不勝感激。

回答

0

而不是在Word範圍上調用查找,調用查找文檔的內容變量。不確定究竟是什麼原因,但這種改變會導致正確的行爲。

更改此:

var wordRange = outlookWordDocument.Application.Selection.Range; 

Word.Find find_highlight = wordRange.Find; 

要這樣:

Word.Find find_highlight = outlookWordDocument.Content.Find; 
相關問題