- •Общая часть
- •Работа с файлами
- •Работа со строками в c#
- •1.5 Работа с WebBrowser в c# Работаем с WebBrowser в Windows Forms приложениях
- •Создание html Editor
- •Расширяем функционал html Editor
- •Специальная часть
- •2.1.3Скрин
- •2.2.2Листинг
- •2.2.3Скрин
- •2.3.1Постановка задачи
- •2.3.2Листинг
- •2.3.3Скрин
- •2.4.1Постановка задачи
- •2.4.2Листинг
- •2.4.3Скрин
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, но для этого необходимо знать, какие параметры необходимо передавать.
