2017-03-19 7 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 Range에서 find를 호출하는 대신 문서의 content 변수에서 find를 호출하십시오. 정확히 이유는 모르지만이 변경으로 인해 올바른 동작이 발생합니다.

var wordRange = outlookWordDocument.Application.Selection.Range; 

Word.Find find_highlight = wordRange.Find; 

이 사람 :이

변경

Word.Find find_highlight = outlookWordDocument.Content.Find;