Visual Studio не позволяет мне добавлять CefSharpBrowserControl в форму через дизайнер - PullRequest
0 голосов
/ 09 февраля 2019

Итак, я решил попробовать расширение CefSharp, и с чем я столкнулся первым?Ошибка, которая не позволяет мне использовать надстройку.

Это смешно расстраивает, потому что я сделал все, что даже администратор или создатель сказал делать на любом форуме, на котором я был.Я пытался просто скомпилировать исходный код на GitHub CEFSharp, но это не сработало.

Если честно, я думаю, что они должны просто предоставить предварительно скомпилированный файл .dll или группу файлов .dll, которые вы можете просто добавить к ссылкам, вместо того, чтобы ожидать, что вы это сделаете.сам.Это просто боль, CEFSharp.

Я пытался перевести конфигурацию на x64 и на любой процессор.Я попытался сделать ссылки на несколько различных библиотек, связанных с CEFSharp.Я попытался добавить элемент браузера программно, и это сработало, но я ничего не могу с ним поделать (например, выполнить код, когда веб-страница загружена).Пока что ни одно из этих решений не сработало вообще.

Imports CefSharp
Imports CefSharp.WinForms
Public Class Browser
       Dim browser As New _ 
       CefSharp.WinForms.ChromiumWebBrowser("https://google.com/")
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles _ 
    MyBase.Load
       Me.Controls.Add(browser)
       browser.Parent = Panel1
       browser.Dock = DockStyle.Fill
    End Sub
End Class

Каждый раз, когда я хочу добавить элемент управления браузером в мою форму с помощью панели инструментов конструктора, это мне не дадут.Он продолжает показывать это окно с сообщением об ошибке «Не удалось загрузить CefSharpBrowser, удаляя из панели инструментов».Или что-то вдоль этих линий.Предполагается, что он сможет просто войти в конструктор, но это явно не так.

1 Ответ

0 голосов
/ 09 февраля 2019

Существуют аналогичные обсуждения в группе Google CefSharp: Добавление элемента управления CefSharp в набор инструментов и Имя "WebView" не существует в пространстве имен .

Онискажем, что Visual Studio имеет некоторые ограничения при использовании сборки в смешанном режиме (C ++ / CLR).В CefSharp нет встроенной поддержки дизайнера Visual Studio.Есть некоторый взлом о том, как это сделать, но я не думаю, что стоит даже тратить на это время.Большинство людей просто принимают этот факт и идут дальше.

Мы успешно используем CefSharp для одного из наших проектов и добавляем элемент управления ChromiumWebBrowser в форму программным путем, очень похоже на то, как вы это делали в своем примере.

Я попытался добавить элемент браузера программным способом, и это сработало, но я ничего не могу с этим поделать (например, выполнить код, когда веб-страница загружена).Пока что ни одно из этих решений не сработало вообще.

Существует событие LoadingStateChanged, которое можно использовать для мониторинга состояния элемента управления веб-браузера.Мы используем его для отображения индикации прогресса до полной загрузки нашей веб-страницы.Вот как мы это делаем:

private System.Windows.Forms.PictureBox picProgress; 
bool loaded = false;   
ChromiumWebBrowser browse;      

public Main()
{
   var uiUrl = "some url or local html file";
   browse = new ChromiumWebBrowser(uiUrl);
   browse.Dock = DockStyle.Fill;
   Controls.Add(browse);
   browse.LoadingStateChanged += Browse_LoadingStateChanged;
}

private void Browse_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
    if (!e.IsLoading)
    {
        picProgress.BeginInvoke((Action)(() => {
            loaded = true;
            picProgress.Visible = false;
            browse.Visible = true;
        }));
    }
    else
    {
        browse.BeginInvoke((Action)(() => {
            loaded = false;
            browse.Visible = false;
        }));
    }
}

Извините, это на C #, но я думаю, вы можете легко адаптировать его для VB.net.

...