2014-12-13 280 views
1

我想在VB.Net中使用WinForms创建浏览器,但无法使CefSharp正常工作。我正在使用预发布的NuGet包。我使用这个代码来构建浏览器:如何让CefSharp在VB.Net中工作WinForms

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 

而且我在debug文件夹中的以下文件: Cef File List

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

+2

Me.Controls.Add(Me.browser) – 2014-12-13 10:24:09

回答

3

您似乎缺少bin目录中的CefSharp.WinForms.dllicudtl.dat

上有把事情在这里设置一些好的建议:https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#CefSharp_binaries

特别是:


答案结束了,在CefSharp(当前稳定版本)的37的版本,在创建浏览器之前需要Cef.Initialize()的显式调用,否则它不加载。这在NuGet的v39.0.0-pre03中得到修复。

的解决方案可以是:

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

+0

Hi @yoshi,我现在加入了bot h这些文件。我确实选择了x86,并且packages.config中唯一不同的是“targetFramework =”net40“',它是'targetFramework =”net45“'。我已经将以下代码添加到'form1_load'中:'Dim brsettings As New CefSharp.CefSettings brsettings.UserAgent =(“MySurf Labs v3.1”) CefSharp.Cef.Initialize(brsettings)'并将其添加到顶部: '私有财产浏览器作为ChromiumWebBrowser'并且没有显示仍然。我已经将'Me.Controls.Add(Me.browser)'添加到设计文件中。 – AJDev 2014-12-14 19:58:33

+1

1)Initialize()应该在构造表单前调用(例如https://github.com/cefsharp/CefSharp.MinimalExample/blob/master/CefSharp.MinimalExample.WinForms/Program.cs)。 2)在构建ChromiumWebBrowser之后应该立即调用Controls.Add。 – Yoshi 2014-12-14 22:23:01

+1

如果这仍然不起作用,我鼓励你从你的项目中删除专有代码并暂时在GitHub上发布它。这将允许其他人尝试加载并发现问题。 – Yoshi 2014-12-14 22:24:10