【问题标题】:WPF browser: how to wait till a page loadsWPF浏览器:如何等待页面加载
【发布时间】:2013-05-19 14:29:30
【问题描述】:

我的 WPF 浏览器有问题。我想加载一个网页。 等待它完全加载,然后输入一些搜索输入,然后检索结果并将其放入 excel 中。

我无法这样做,主程序在加载 pagecomplete_event 之前加载并完成执行。场景是:

  1. 加载组件提供商网站
  2. 转到搜索选项并搜索我正在读取的 EXCEL 文件的部件号
  3. 在搜索栏中输入零件编号并点击搜索
  4. 下载详情
  5. 对许多部分重复这些步骤

我已经用 WinForms 完成了这项工作,而且效果很好。问题是调用DOEVENTS。它有时会使我的程序挂起,尤其是在处理一个大列表时。所以想在 WPF 中做。

我已经放置了Load_Complete 事件,但正如我所提到的,它是在主程序完成之后 发生的。

我搜索并得到了这个链接:How to create and use WebBrowser in background thread。但这似乎没有帮助 - WPF 中似乎没有System.Windows.Deployment - 我得到红色波浪下划线。我发现的其他解决方案似乎也没有帮助。

【问题讨论】:

  • System.Windows.Deployment 似乎特定于 Silverlight:msdn.microsoft.com/en-us/library/…
  • 感谢指正。
  • 我似乎无法理解您的目标。您希望主 UI 线程等待任务完成,还是不想在后台线程中加载页面而不阻塞 wpf 主 UI 线程?
  • 我的目标是--在 wpf 浏览器中加载页面。--输入搜索详细信息--从页面中提取详细信息--使用新的搜索详细信息重新加载页面并再次提取--重复直到没有更多搜索列表....在执行此搜索时,页面应用程序必须等到页面加载并提取。应用程序没有等待 WPF 浏览器完成页面加载并触发我有提取代码的页面加载事件

标签: c# wpf webbrowser-control


【解决方案1】:

这个问题困扰了我一段时间,终于找到了解决办法。现在我对 vb.net 还很陌生,所以这可能不是最好的方法,但它确实有效。这是在 vb.net 中,您可以轻松转换为 c#。

AddHandler (webbrowser1.LoadCompleted), AddressOf WebpageLoaded
    webbrowser1.Navigate("http://www.myWebsite.net/admin/")

这会创建一个触发 WebpageLoaded 子的事件。

我用它来等待页面加载,然后登录我的帐户。 以下是我的做法。

Private Sub WebpageLoaded()
    If webbrowser1.Url.ToString = "http://www.myWebsite.net/admin/" Then
        webbrowser1.Document.GetElementById("username").ScrollIntoView(True)
        webbrowser1.Document.GetElementById("username").SetAttribute("value", "myUsername")
        webbrowser1.Document.GetElementById("password").SetAttribute("value", "myPassword")
    End If
End Sub

我希望这会有所帮助。你可能不需要 ScrollIntoView 我只是用它来查看进度,因为我终于让它工作了。

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2012-04-27
    • 1970-01-01
    相关资源
    最近更新 更多