我正在尝试使用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
我在调试文件夹中有以下文件:
我在locales文件夹中有en_US文件。 当我运行应用程序时,没有出现错误或警告,它只是一个空白表单。谁能告诉我我做错了什么?我是CefSharp的新手,但是经验丰富的VB.Net程序员。
答案 0 :(得分:3)
您似乎从bin目录中遗漏了CefSharp.WinForms.dll
和icudtl.dat
。
有一些关于在此处设置内容的好建议:https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#CefSharp_binaries
特别是:
x86
或x64
作为平台目标? AnyCPU
不起作用。packages.config
与https://github.com/cefsharp/CefSharp.MinimalExample/tree/master/CefSharp.MinimalExample.WinForms Cef.Initialize()
进行比较
答案最终是在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。