0

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

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

  1. 加载组件提供商网站
  2. 转到搜索选项并搜索我正在阅读的 EXCEL 文件的零件号
  3. 将零件编号放在搜索栏中,然后单击搜索
  4. 下载详细信息
  5. 对许多零件重复这些步骤

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

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

我搜索并得到了这个链接:如何在后台线程中创建和使用 WebBrowser。但这似乎没有帮助 - System.Windows.DeploymentWPF 中似乎没有 - 我得到红色波浪下划线。我发现的其他解决方案似乎也没有帮助。

4

1 回答 1

0

这困扰了我一段时间,终于找到了解决方案。现在我对 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 我只是用它来查看进度,因为我终于让它工作了。

于 2014-06-09T22:28:49.963 回答