Chromium webBrowser导航方法

时间:2016-06-06 14:46:57

标签: c# dll navigation chromium cefsharp

我已经使用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'分配给 - 它是只读的

那么当用户点击“后退”按钮时,如何强制浏览器导航页面?

1 个答案:

答案 0 :(得分:0)

所以看来这个问题与我安装的CefSharp版本/我引用的版本有关 - 看来我已经安装并引用了最新版本,但编译器似乎认为我引用的是旧版本,并且无法决定它认为应该使用哪一个。卸载CefSharp后,删除我对它所做的所有引用,并重新安装它/重新实现我对它的使用,我的应用程序现在正确使用浏览器,我能够显示并与我正在显示的网页完全交互