2014-12-13 7 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 

И у меня есть следующие файлы в папке отладки: Cef File List

И у меня есть файл en_US в папке локали. Когда я запускаю приложение, никаких ошибок или предупреждений не возникает, это просто пустая форма. Может ли кто-нибудь сказать мне, что я делаю неправильно? Я новичок в CefSharp, но опытный программист VB.Net.

+2

Me.Controls.Add (Me.browser) –

ответ

3

Возможно, вам не хватает CefSharp.WinForms.dll и icudtl.dat из каталога bin.

Есть некоторые хорошие советы, как настраивали вещи здесь: https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#CefSharp_binaries

В частности:


Ответ заканчивал тем, что в версии 37 CefSharp (текущая стабильная версия), вам нужен явный вызов Cef.Initialize() перед созданием браузера, в противном случае он не нагрузки. Это исправлено в v39.0.0-pre03 NuGet.

Решение является:

  • Обновление до v39.0.0-pre03 (это на самом деле имеет много исправлений ошибок): https://www.nuget.org/packages/CefSharp.WinForms/39.0.0-pre03
  • Изменить Form1.Designer.vb и добавить вызов 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

+0

Hi @yoshi, теперь я добавил бота ч этих файлов. У меня есть 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) 'и добавил это вверху: 'Private Property browser As ChromiumWebBrowser' И ничего не появляется. И я добавил «Me.Controls.Add (Me.browser)» в файл проекта. – AJDev

+1

1) Инициализировать() следует вызывать раньше, прежде чем форма будет построена (например, https: //github.com/cefsharp/CefSharp.MinimalExample/blob/master/CefSharp.MinimalExample.WinForms/Program.cs). 2) Controls.Add следует вызывать сразу после создания ChromiumWebBrowser. – Yoshi

+1

Если это все еще не работает, я рекомендую вам вырезать проприетарный код из вашего проекта и временно публиковать его на GitHub. Это позволит другим попытаться загрузить его и выявить проблему. – Yoshi