如何让CefSharp在VB.Net WinForms中工作

时间:2014-12-13 01:07:37

标签: .net vb.net winforms cefsharp

我正在尝试使用WinForms在VB.Net中创建一个浏览器,但我无法让CefSharp工作。我正在使用预发布的NuGet包。我正在使用此代码构建浏览器:

    Private m_IsInDesignMode As Boolean = True
Public ReadOnly Property IsInDesignMode() As Boolean
    Get
        Return m_IsInDesignMode
    End Get
End Property
Public Sub New()
    InitializeComponent()
    m_IsInDesignMode = (LicenseManager.UsageMode = LicenseUsageMode.Designtime)
    Me.browser = New ChromiumWebBrowser("http://emposoft.tk")
    Me.browser.Dock = DockStyle.Fill

End Sub

我在调试文件夹中有以下文件: Cef File List

我在locales文件夹中有en_US文件。 当我运行应用程序时,没有出现错误或警告,它只是一个空白表单。谁能告诉我我做错了什么?我是CefSharp的新手,但是经验丰富的VB.Net程序员。

2 个答案:

答案 0 :(得分:3)

您似乎从bin目录中遗漏了CefSharp.WinForms.dllicudtl.dat

有一些关于在此处设置内容的好建议:https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#CefSharp_binaries

特别是:


答案最终是在CefSharp版本37(当前稳定版本)中,在创建浏览器之前需要显式调用v39.0.0-pre03,否则无法加载。这已在v39.0.0-pre03 NuGet中修复。

解决方案是:

  • 升级到Form1.Designer.vb(实际上有很多错误修复):https://www.nuget.org/packages/CefSharp.WinForms/39.0.0-pre03
  • 修改Cef.Initialize()并添加对Public Sub New() InitializeComponent() m_IsInDesignMode = (LicenseManager.UsageMode = LicenseUsageMode.Designtime) CefSharp.Cef.Initialize() Me.browser = New CefSharp.WinForms.ChromiumWebBrowser("http://emposoft.com") Me.Controls.Add(Me.browser) End Sub 的调用,如下所示:

{{1}}

答案 1 :(得分:0)

有趣。作为一个仅供参考,如果您添加一个面板然后将me.browser.parent设置为该面板,则通过代码将控件添加到表单要容易得多。然后,您可以通过IDE控制它的位置以查看它,然后通过将Dock设置为fill对其进行编码。我看到许多代码段都在其中使用me.controls.add,但仅将父级设置为面板更为直接,因此没有必要使用controls.add。