2016-01-08 4 views
0

Как this suggestion я использую следующий код, чтобы выделить выбранный текст в WebBrowser:Выделите выбранный гибридный текст управления # WebBrowser C

using mshtml; 

    if (webBrowser1.Document != null) 
    { 
     IHTMLDocument2 document = webBrowser1.Document.DomDocument as IHTMLDocument2; 
     if (document != null) 
     { 
      IHTMLSelectionObject currentSelection = document.selection; 
      IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange; 
      if (range != null) 
      { 
       string oldText = range.text.Replace("\n", "</br>"); 
       string newHtmlText = "<span style='background-color: rgb(255, 255, 0);'>" +oldText + "</span>";       
       range.pasteHTML(newHtmlText);       
      } 
     } 
    } 

Когда обычный текст выбирается каждая вещь в порядке. Но, как вы можете видеть на этом изображении, когда выбран какой-либо гибридный текст, он повредит документ.

enter image description here

Иногда может выбранный текст содержит таблицы и другие форматированные тексты. Как я могу выделить любую часть документа без изменения формата?

ответ

1

Я нашел ответ.

У mshtml есть все возможности для управления текстом. Here - это синтаксис execCommand для внесения любых изменений в документ.

Таким образом, вам не нужно самостоятельно анализировать html или khnow о html-элементах.

using mshtml; 

if (webBrowser1.Document != null) 
{ 
    IHTMLDocument2 document = webBrowser1.Document.DomDocument as IHTMLDocument2; 
    if (document != null) 
    { 
     IHTMLSelectionObject currentSelection = document.selection; 
     IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange; 
     if (range != null) 
     { 
      range.execCommand("BackColor", false, "FFFF00");      
     } 
    } 
}