我有一个WPF应用程序,它应该在加载后从网页(使用角度)读取文本。有没有办法等待网页完全加载然后显示文本?我已经搜索了一段时间的答案,但似乎没有一个对我有效。
提前致谢!
答案 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);
}
}