Chromium 网络浏览器导航方法

Chromium webBrowser navigation methods

我已经使用 CefSharp 库将 Chromium WebBrowser 添加到我的 C# 应用程序,现在想向 'Back' 按钮添加功能,这将允许用户导航到上一页。

据我了解,这将通过以下行完成:

browser.WebBrowser.Back();

但是,如果我只是在按下 'Back' 按钮时调用的方法中写入这一行,则会抛出异常,并且我的应用程序会中断。

例外说:

Exception was unhandled

An unhandled exception of type 'System.Exception' occurred in CefSharp.dll

Additional information: lBrowser instance is null. Browser has likely not finished initializing or is in the process of disposing.

为什么我会收到此异常? 如果我将光标悬停在发生异常的行上,则会弹出一条消息:

(extension) void lWebBrowser.Back()

Navigates back, must check lWebBrowser.CanGoBack before calling this method.

但是,如果我随后将此行移动到 if 语句中,该语句首先检查 lWebBrowser.CanGoBack 的值,即

if(browser.WebBrowser.CanGoBack){
    browser.WebBrowser.Back();
}

然后虽然我的应用程序会 运行,但 CanGoBack 总是显示为错误 - 任何时候我按下 'Back' 按钮,我的控制台中显示的调试表明它是错误的...但是如果尝试在任何地方为其分配一个 true 的值(即当用户导航到另一个页面时 - 所以有一个页面可以返回),例如:

browser.WebBrowser.CanGoBack = true;

我收到一个编译错误:

Property or indexer 'lWebBrowser.CanGoBack' cannot be assigned to -- it is read only

那么当用户单击 'back' 按钮时,如何强制浏览器返回页面?

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