Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчте .doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
837.12 Кб
Скачать

1.5 Работа с WebBrowser в c# Работаем с WebBrowser в Windows Forms приложениях

Создадим Windows Forms приложение, в которое добавим для начала элементы управления WebBrowser, Button и RichTextbox. Первое, что сделаем - это загрузим какую-нибудь веб-страницу по умолчанию при запуске приложения. Для этого в методе Form1_Load напишем:

private void Form1_Load(object sender, EventArgs e)

{

    webBrowser.Navigate("http://m.bing.com/");

}

После чего получим такой результат:

Шаблон проекта создан, приступим к выполнению некоторых задач.

Создание html Editor

Мы все привыкли к онлайн-редакторам HTML, но если нам необходимо сделать это в Windows Forms приложении? WebBroser может нам помочь в этом.

В первую очередь мы должны добавить в проект ссылку на Microsoft.mshtml, после чего перепишем наш код таким образом:

private void Form1_Load(object sender, EventArgs e)

{

    InitWebBrowser();

}

 

private void InitWebBrowser()

{

    string Encoding = "ISO-8859-1";

    HtmlDocument hd;

    mshtml.IHTMLDocument2 axObj;

 

    webBrowser.DocumentText = "";

    webBrowser.Document.Encoding = Encoding;

    hd = webBrowser.Document;

    axObj = hd.DomDocument as mshtml.IHTMLDocument2;

    axObj.designMode = "On";

    webBrowser.Navigate("http://m.bing.com/");

}

C виду он кажется очень простым, но на самом деле каждая строчка здесь имеет большое значение (когда пришлось долго попотеть, чтобы заставить этот код работать). Сначала мы создаем переменные типа mshtml.IHTMLDocument2 и HtmlDocument. Дальше присваиваем свойству DocumentText пустое значение - если мы этого не сделаем, то на следующей строчке мы получим исключение NullReferenceException и сообщением "В экземпляре объекта не задана ссылка на объект". На самом деле, мы не можем работать с свойствомwebBrowser.Document до того, как оно не проинициализируется. Самый простой способ - присвоить пустую строку свойству DocumentText или написать что-то типа webDrowser.Navigate("about:blank").

Нужно еще заметить, что многие свойства WebBrowser являются COM объектами, т.е. по сути WebBrowser - это обвертка (wrapper) над более старым элементом управления AxSHDocVw.AxWebBrowser. Поэтому следующим этапом является приведение hd.DomElement к интерфейсу mshtml.IHTMLDocument2. дальше мы добрались до самой сути - изменение режима браузера  с помощью строки axObj.designMode = "On";

После этого наша страница будет редактируемой (добавим строку "Welcome from WebBrowser Demo!"):

Рассмотрим как можно менять стили в нашем HTML Editor.

Расширяем функционал html Editor

Понятно, что в таком виде наш редактор никому не нужен, поэтому добавим ему немного функционала.

Для этого нам необходимо разобраться, как можно управлять содержимым веб-браузера программно. А сделать это можно с помощью команды ExecCommand класса HtmlDocument, но для этого необходимо знать, какие параметры необходимо передавать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]