【问题标题】:WPF WebBrowser control. need to prevent it from closing within an appWPF WebBrowser 控件。需要防止它在应用程序中关闭
【发布时间】:2011-12-31 13:51:42
【问题描述】:

我有一个 WPF,我在其中实现了一个 WebBrowser 控件,并且我有一个对象列表,当我选择它们时,它会更改 webBrowser 控件的 url 绑定,一切都很好。

但是,如果我所在的网页试图关闭该网页,则会弹出一个对话框,您可以点击是或否来关闭“窗口”(WebBrowser 控件)

如果用户点击“是”,则 Web 浏览器控件将关闭,并且当您尝试选择列表中的其他内容时抛出异常,因为该窗口不再存在。

webbrowser 控件没有关闭公开的方法,我可以访问它,我能够覆盖“Window.Close()”方法,但这也阻止了我关闭主应用程序窗口。

我曾尝试从 WebBrowser 类继承,但它是密封的,因此我无法继承以添加事件处理程序或覆盖诸如“Close()”之类的方法或诸如“OnClosing()”之类的事件

我无法控制该网站,因为它是第三方产品。

另外,WebBrowser 控件在退出时不会取消导航。

所以我的问题是

A.是否可以拦截对话并始终回答“否”?

B.即使用户对对话框说“是”,是否还有其他方法可以防止 WebBrowser 控件关闭?

【问题讨论】:

    标签: c# wpf browser


    【解决方案1】:

    曾经我不得不解决类似的情况。它是一个 Delphi 应用程序,带有一个嵌入式 TWebBrowser 组件,它与 .NET 的 WebBrowser 本质上是一样的。软件会自动点击网页的元素,有一种情况是点击后会弹出确认对话框。自动按下 OK 按钮的最简单方法是使用确认对话框的参数调用 FindWindow,并使用窗口句柄通过调用 SendInput 向其发送 Enter 键按下。我认为在您的情况下需要按 Escape 键。

    【讨论】:

    • 这看起来真的很老套,我最终还是做了一些不同的事情。不过谢谢!
    【解决方案2】:

    所以,我最终将控件放在单独的视图中,然后将视图构建和销毁为对话

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-11
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      相关资源
      最近更新 更多