Перейти к содержимому

Как открыть html файл в webbrowser c

  • автор:

как отобразить html в WebBrowser WinForms?

Не получается реализовать отображение html файла в элементе WebBrowser, статьи MSDN читал, но не получается. Как реализовать код?

Отслеживать
Дмитрий Король
задан 4 дек 2015 в 19:53
Дмитрий Король Дмитрий Король
21 1 1 серебряный знак 3 3 бронзовых знака
Окей, а что у вас есть на текущий момент? Дайте код.
4 дек 2015 в 20:07

не могу дать код как таковой, поскольку перебирал различные вариации в попытках отобразить html, потому и написал сюда в надежде на помощь с отображением содержимого в элементе браузер

4 дек 2015 в 20:11
Окей, начнём вот с чего: WinForms или WPF? И всё же C# или C++/CLI?
4 дек 2015 в 20:14
windows forms C++/CLI. как понимаю, это неподходящая комбинация?
4 дек 2015 в 20:20
Ну, C# было бы лучше. Но по идее не так страшно.
4 дек 2015 в 20:23

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

  1. прочитать файл в строку — вызовом File.ReadAllText(filename) ;
  2. выставить содержимое WebBrowser равным этой строке — через свойство DocumentText :
webBrowser1.DocumentText = "Hello, World!" 

Выставление DocumentText срабатывает только один раз. Если нужно несколько раз менять содержимое, используйте следующий код:

private void DisplayHtml(string html) < webBrowser1.Navigate("about:blank"); if (webBrowser1.Document != null) < webBrowser1.Document.Write(string.Empty); >webBrowser1.DocumentText = html; > 

Отслеживать
ответ дан 4 дек 2015 в 20:43
user177221 user177221

ну, мне, по сути, необходимо отобразить целиком html с форматированием текста, а не считать его построково только как текст. хотя, возможно, я вас неправильно понял, поскольку являюсь совсем новичком. получается, необходимо все прописывать тут? ‘private: System::Void part4L1_Load(System::Object^ sender, System::EventArgs^ e) < >‘

4 дек 2015 в 20:55
private: System::Void part4L1_Load(System::Object^ sender, System::EventArgs^ e) < непосредственно код >
4 дек 2015 в 21:00

String^ uriString = String::Format("file:///", ); webBrowser1->Navigate(gcnew Uri(uriString)); 

В случае, когда html лежит в том каталоге, где exe (а не где проект!), подойдёт что-то такое:

String^ dir = Path::GetDirectoryName(Application::ExecutablePath); String^ path = Path::Combine(dir, "тут имя вашего html"); 

и дальше как обычно

String^ uriString = String::Format("file:///", path); webBrowser1->Navigate(gcnew Uri(uriString)); 

Компонент WebBrowser не открывает html файл

При открытии html документа в компоненте WebBrowser выскакивает ошибка

При этом на Win 7 всё прекрасно работает.
А вот на Win 8.1 не работает.

Вот кусок кода, который отвечает за открытие документа:

string curDir = Directory.GetCurrentDirectory();
wb1.Navigate(curDir + «\rasp.html»);

Я считаю, что проблема именно в нём.
Собрано всё на framework 4.0
Пробовал собирать на 4.5 и 4.5.1
Не помогает.
Если что то не понятно, прикладываю архив с проектом

Практическое руководство. Доступ к исходному коду HTML с использованием управляемой объектной модели документов HTML

Свойства DocumentStream и DocumentText в элементе управления WebBrowser возвращают HTML текущего документа в том виде, в котором он существовал при первом отображении. Если вы измените страницу, используя вызовы таких методов и свойств, как AppendChild и InnerHtml, то при вызове DocumentStream и DocumentText эти изменения отображаться на будут. Чтобы получить актуальный HTML-источник DOM, необходимо вызвать свойство OuterHtml по элементу HTML.

В следующей процедуре показано, как получить динамический источник и отобразить его в отдельном контекстном меню.

Получение динамического источника с помощью свойства OuterHtml.

  1. Создайте новое приложение Windows Forms. Для начала создайте одну форму Form и присвойте ей имя Form1 .
  2. Создайте элемент управления WebBrowser в приложении Windows Forms и присвойте ей имя WebBrowser1 . Дополнительные сведения см. в статье Практическое руководство. Добавление функциональности веб-браузера в приложения Windows Forms.
  3. Создайте вторую форму Form с именем CodeForm .
  4. Добавьте элемент управления RichTextBox для CodeForm и присвойте его свойству Dock значение Fill .
  5. Создайте в CodeForm общедоступное свойство с именем Code .
public string Code < get < if (richTextBox1.Text != null) < return (richTextBox1.Text); >else < return (""); >> set < richTextBox1.Text = value; >> 
Public Property Code() As String Get If (RichTextBox1.Text IsNot Nothing) Then Code = RichTextBox1.Text Else Code = "" End If End Get Set(ByVal value As String) RichTextBox1.Text = value End Set End Property 
private void button1_Click(object sender, EventArgs e) < HtmlElement elem; if (webBrowser1.Document != null) < CodeForm cf = new CodeForm(); HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML"); if (elems.Count == 1) < elem = elems[0]; cf.Code = elem.OuterHtml; cf.Show(); >> > 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim elem As HtmlElement If (WebBrowser1.Document IsNot Nothing) Then Dim cf As New CodeForm() Dim elems As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("HTML") If (elems.Count = 1) Then elem = elems(0) cf.Code = elem.OuterHtml cf.Show() End If End If End Sub 

Отказоустойчивость

Всегда тестируйте значение Document, прежде чем пытаться его извлечь. Если текущая страница не закончила загружаться, значит, Document либо один или несколько дочерних объектов еще не инициализированы.

См. также

  • Использование управляемой объектной модели HTML-документов
  • Общие сведения об элементе управления WebBrowser

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

.NET Desktop feedback

The .NET Desktop documentation is open source. Provide feedback here.

Обратная связь

Отправить и просмотреть отзыв по

Практическое руководство. Создание средства просмотра HTML-документов в приложении Windows Forms

Элемент управления WebBrowser можно использовать для отображения и печати HTML-документов без предоставления полной функциональности веб-браузера. Это полезно, если вы хотите воспользоваться возможностями форматирования HTML, но не хотите, чтобы пользователи загружали произвольные веб-страницы, которые могут содержать ненадежные веб-элементы управления или потенциально вредоносный код сценариев. Можно ограничить возможности элемента управления WebBrowser таким образом, чтобы, например, использовать его в качестве средства просмотра электронной почты в формате HTML или предоставить справку в формате HTML в приложении.

Создание средства просмотра HTML-документа

  1. Присвойте свойству AllowWebBrowserDrop значение false , чтобы элемент управления WebBrowser не открывал файлы, которые перетаскиваются в него мышью.
webBrowser1.AllowWebBrowserDrop = false; 
webBrowser1.AllowWebBrowserDrop = False 
webBrowser1.Url = new Uri("http://www.contoso.com/"); 
webBrowser1.Url = New Uri("http://www.contoso.com/") 

Компиляция кода

Для этого примера требуются:

  • элемент управления WebBrowser с именем webBrowser1 ;
  • ссылки на сборки System и System.Windows.Forms .

См. также

  • WebBrowser
  • AllowWebBrowserDrop
  • Url
  • Общие сведения об элементе управления WebBrowser
  • Безопасность элемента управления WebBrowser
  • Практическое руководство. Переход по заданному URL-адресу с помощью элемента управления WebBrowser
  • Практическое руководство. Печать с использованием элемента управления WebBrowser

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

.NET Desktop feedback

The .NET Desktop documentation is open source. Provide feedback here.

Обратная связь

Отправить и просмотреть отзыв по

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *