如何在C#WPF应用程序中加载网页后获取文本

时间:2016-10-07 12:11:43

标签: c# angularjs wpf visual-studio visual-studio-2015

我有一个WPF应用程序,它应该在加载后从网页(使用角度)读取文本。有没有办法等待网页完全加载然后显示文本?我已经搜索了一段时间的答案,但似乎没有一个对我有效。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这是来自Winforms应用程序,我需要使用类似的东西,并且在VB中,但如果你使用telerik转换器,可以很容易地转换为C#。如果您可以分享您的代码,我可以为您优化我的答案

Private Property pageready As Boolean = False

Private Sub WaitForPageLoad()
    AddHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
    While Not pageready
        Application.DoEvents()
        Dim blocker = WebBrowser1.Document.Window.Frames(0).Frames(3).Frames(4).Document.GetElementsByTagName("head")
    End While
    pageready = False

End Sub

Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
    If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
        pageready = True
        RemoveHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
    End If
End Sub

在这个示例中,您可能会看到我正在使用多个帧,但是在执行我需要它之前等待页面准备就绪

这是C#转换

bool pageready = False;

private void WaitForPageLoad()
{
WebBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(PageWaiter);
while (!pageready) {
    Application.DoEvents();
    dynamic blocker = WebBrowser1.Document.Window.Frames(0).Frames(3).Frames(4).Document.GetElementsByTagName("head");
}
pageready = false;

}

private void PageWaiter(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (WebBrowser1.ReadyState == WebBrowserReadyState.Complete) {
    pageready = true;
    WebBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(PageWaiter);
}
}