Как получить текст после загрузки веб-страницы в приложении C # WPF

#c# #angularjs #wpf #visual-studio #visual-studio-2015

#c# #angularjs #wpf #visual-studio #visual-studio-2015

Вопрос:

У меня есть приложение WPF, которое должно считывать текст с веб-страницы (которая использует angular) после ее загрузки. Есть ли какой-нибудь способ дождаться полной загрузки веб-страницы, а затем отобразить текст? Я некоторое время искал ответы, и ни один из них, похоже, не сработал для меня.

Заранее спасибо!

Ответ №1:

Это из приложения Winforms, для которого мне нужно было использовать аналогичную вещь, и оно находится в VB, но может быть легко преобразовано в C #, если вы используете telerik convertor. Если вы можете поделиться своим кодом, я, возможно, смогу уточнить свой ответ для вас

 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);
}
}