我已经使用CefSharp库将Chromium WebBrowser添加到我的C#应用程序中,现在想要为“后退”按钮添加功能,这将允许用户导航到上一页。
据我了解,这将通过以下行完成:
browser.WebBrowser.Back();
但是,如果我只是在按下“后退”按钮时调用的方法中写入此行,则会抛出异常,并且我的应用程序会中断。
例外说:
异常未处理
CefSharp.dll
中出现未处理的“System.Exception”类型异常其他信息:lBrowser实例为null。浏览器可能尚未完成初始化或正在处理。
为什么我会收到此异常? 如果我将光标悬停在发生异常的行上,则会弹出一条消息:
(扩展名)void lWebBrowser.Back()
导航回来,在调用此方法之前必须检查lWebBrowser.CanGoBack。
但是,如果我在if
语句中移动此行,首先检查lWebBrowser.CanGoBack
的值,即
if(browser.WebBrowser.CanGoBack){
browser.WebBrowser.Back();
}
然后虽然我的应用程序将运行,但CanGoBack
似乎总是假的 - 任何时候我按下'返回'按钮,我的控制台中显示的调试表明它是假的...但是如果尝试分配它在任何地方都是true
的值(即当用户导航到另一个页面时 - 所以有一个页面可以返回),例如:
browser.WebBrowser.CanGoBack = true;
我收到一个编译错误,上面写着:
无法将属性或索引器'lWebBrowser.CanGoBack'分配给 - 它是只读的
那么当用户点击“后退”按钮时,如何强制浏览器导航页面?
答案 0 :(得分:0)
所以看来这个问题与我安装的CefSharp版本/我引用的版本有关 - 看来我已经安装并引用了最新版本,但编译器似乎认为我引用的是旧版本,并且无法决定它认为应该使用哪一个。卸载CefSharp后,删除我对它所做的所有引用,并重新安装它/重新实现我对它的使用,我的应用程序现在正确使用浏览器,我能够显示并与我正在显示的网页完全交互