2015-04-30 5 views
3

Моего старого приложение WinForm используется HtmlElementCollection для обработки страницыКак я могу получить HtmlElementCollection из WebBrowser WPF

HtmlElementCollection hec = this.webbrowser.Document.GetElementsByTagName("input"); 

В WPF WebBrowser, есть несколько вещей, которые различны. Например

this.webbrowser.Document не имеет метод, называемый GetElementsByTagName

Поэтому мой код не может получить HtmlElementCollection

ответ

6

Вам нужно добавить ссылку на Microsoft.mshtml, а затем вам нужно лить документ как mshtml.HTMLDocument. После того, как вы сделаете это, вы должны быть в состоянии использовать getElementsByTagName() методу

var document = webBrowser.Document as mshtml.HTMLDocument; 
var inputs = document.getElementsByTagName("input"); 
foreach (mshtml.IHTMLElement element in inputs) 
{ 

} 

getElementsByTagName() возвращает mshtml.IHTMLElementCollection и каждый элемент имеет mshtml.IHTMLElement типа

EDIT

Альтернативное решение, если вам нужно использовать WinForms WebBrowser вы можете использовать это вместо WPF. Добавить ссылку на WindowsFormsIntegration и System.Windows.Forms, создать пространство имен в XAML и использовать различное управление браузером

<Window ... 
    xmlns:winforms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"> 
    <WindowsFormsHost> 
     <winforms:WebBrowser x:Name="webBrowser"/> 
    </WindowsFormsHost> 
</Window> 
+0

У меня есть методы, которые принимают HtmlElementCollection в качестве параметра. Будет ли этот IHTMLElement быть таким же, как HTMLElement? –

+0

Нет, не будет. Это другой тип – dkozl

+0

, так что я могу просто поменять HtmlElementCollection на IHtmlElementCollection и все должно работать? –

 Смежные вопросы

  • Нет связанных вопросов^_^