Заменить элемент управления .NET WebBrowser на лучший браузер, такой как Chrome? - PullRequest
400 голосов
/ 26 апреля 2009

Есть ли относительно простой способ вставить современный браузер в приложение .NET?

Насколько я понимаю, элемент управления WebBrowser является оберткой для IE , что не составило бы проблемы, за исключением того, что похоже, что это очень старая версия IE со всем, что влечет за собой ошибки CSS, потенциальные риски безопасности (если механизм рендеринга не был исправлен, могу ли я ожидать, что проблемы переполнения буфера zillion будут устранены?) И другие проблемы.

Я использую Visual Studio C # (экспресс-издание - здесь что-нибудь изменится?)

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

Мне нужно:

  • Браузер, который может интегрироваться в окне моего приложения (не в отдельном окне)
  • Хорошая поддержка CSS, js и других веб-технологий, наравне с любым современным браузером
  • Основные функции браузера, такие как «навигация», «возврат», «перезагрузка» ...
  • Либеральный доступ к коду страницы и выводу.

Я думал о Chrome, поскольку он поставляется под лицензией BSD, но я был бы так же доволен последней версией IE.

Как можно больше, я бы хотел, чтобы все было просто. Лучше всего было бы, если бы можно было исправить существующий элемент управления WebBrowser, который уже делает примерно 70% того, что мне нужно, но я не думаю, что это возможно.

Я нашел элемент управления ActiveX для Mozilla (http://www.iol.ie/~locka/mozilla/control.htm), но похоже, что это старая версия, поэтому это не обязательно улучшение.

Я открыт для предложений

Ответы [ 20 ]

4 голосов
/ 17 июня 2010

Я использовал GeckoFX, и он мне очень помогает. Он использует движок Firefox. Единственное предостережение, с которым я когда-либо сталкивался, это то, что он генерирует событие «DocumentLoaded» один раз до того, как документ действительно полностью загружен ... Я думаю, что он выбрасывает один при загрузке HTML, а затем другой, когда все изображения и прочее загружены. Я исправил это, просто проигнорировав первый, и до сих пор он работал прекрасно.

Вы можете найти его здесь: https://bitbucket.org/geckofx/

Как и большинство приличных библиотек, он с открытым исходным кодом.

4 голосов
/ 11 мая 2018

ОБНОВЛЕНИЕ 2018 МАЯ

Если вы настраиваете приложение для запуска в Windows 10, то теперь вы можете встроить браузер Edge в ваше приложение .net с помощью Windows Community Toolkit .

WPF Пример:

1) Установить пакет Nuget для Windows Community Toolkit

Install-Package Microsoft.Toolkit.Win32.UI.Controls

2) Код XAML

<Window
    x:Class="WebViewTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:WPF="clr-namespace:Microsoft.Toolkit.Win32.UI.Controls.WPF;assembly=Microsoft.Toolkit.Win32.UI.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WebViewTest"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>
        <WPF:WebView x:Name="wvc" />
    </Grid>
</Window>

3) Код CS:

public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();

    // You can also use the Source property here or in the WPF designer
    wvc.Navigate(new Uri("https://www.microsoft.com"));
  }
}

Пример WinForms:

public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();

    // You can also use the Source property here or in the designer
    webView1.Navigate(new Uri("https://www.microsoft.com"));
  }
}

Пожалуйста, обратитесь к этой ссылке для получения дополнительной информации.

3 голосов
/ 13 марта 2011

MozNet - это элемент управления .NET, ранее основанный на более или менее заброшенном элементе управления GeckoFX, но он находится в стадии полной разработки и обладает гораздо большим количеством функций, чем GeckoFX. Вы можете найти его на сайте Se7en Soft .

2 голосов
/ 12 февраля 2016

Обновление 2016:

Есть 3 дополнительных варианта, которые я могу предложить:

1. BrowseEmAll.Cef

Компонент .Net, который можно использовать для интеграции Chrome engine в ваше приложение .Net. Основано на CefGlue , но немного быстрее на обновлениях до последней версии Chrome. Также имеется опция коммерческая поддержка , которая может пригодиться для некоторых. Конечно, сам компонент с открытым исходным кодом .

2. BrowseEmAll.Gecko

Еще один компонент .Net, который можно использовать для интеграции движка Firefox в ваше приложение .Net. Это основано на Geckofx , но в отличие от текущей версии Geckofx это будет работать с обычной версией сборки Firefox. Чтобы использовать Geckofx, вам нужно собрать Firefox самостоятельно. Опять же коммерческая поддержка доступна, но сам компонент полностью с открытым исходным кодом .

3. BrowseEmAll Core API

Вам нужны все разные браузеры в вашем .Net приложении? Какой API BrowseEmAll Core вы можете интегрировать в свое приложение Chrome, Firefox, Webkit и Internet Explorer . Это коммерческий продукт , но будьте осторожны.

(Полное раскрытие: я работаю в этой компании, поэтому беру все, что я говорю, с долей соли)

2 голосов
/ 12 ноября 2014

EO.BrowserControl - это быстро и просто. Он имеет браузерный движок Chrome и работает с любой версией .NET

https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7

Примечание. Это коммерчески лицензированный продукт, и я не буду продвигать его с учетом этого. Попробовав другие вещи, я выбрал это.

1 голос
/ 08 августа 2013

Geckofx и Webkit.net поначалу были многообещающими, но они не шли в ногу с Firefox и Chrome соответственно, в то время как Internet Explorer улучшался, как и элемент управления Webbrowser, хотя он ведет себя как IE7 по умолчанию независимо от того, что Версия IE у вас есть, но это можно исправить, зайдя в реестр и изменив ее на IE9, разрешающую HTML5.

1 голос
/ 08 августа 2009

Проверьте элемент управления GeckoFX .

1 голос
/ 30 ноября 2012

Если вы ищете хороший элемент управления на основе IE - проверьте: http://code.google.com/p/csexwb2/

Я использовал его в производстве продукции. Это довольно хорошо и имеет хорошие демонстрационные версии, хотя, кажется, не поддерживается так, как раньше.

0 голосов
/ 08 июля 2016

Обновление 2016:

Для меня единственная надежная браузерная альтернатива IE - это EO.WebBrowser. Я потратил дни и недели, пробуя другие. У всех них были некоторые проблемы, которые остановили шоу для меня в какой-то момент.

0 голосов
/ 15 января 2016

Я перепробовал все браузеры, которые там есть. К сожалению, единственным, кто действительно работал на меня при любых обстоятельствах, был EO.Browser. Я хотел бы выбрать бесплатное решение, но я закончил с EO.Browser. Это довольно дорого, но в хорошем состоянии.

...