Letysite.ru

IT Новости с интернет пространства
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

C работа с браузером

.Net And C#

Страницы

Автоматизация бизнеса

среда, 18 июля 2012 г.

Как создать браузер, работа с WebBrowser C#

Для того, чтобы создать браузер необходимо создать приложение Windows Forms, которое включает в себя элементы управления Button, TextBox, Panel и конечно WebBrowser. Конечный пользователь должен набрать адрес веб страницы, а наш браузер должен отобразить документ.
И так приведу список всех элементов.

Когда пользователь наберет адрес и нажмет WebBrowser извлечет запрошенную страницу и отобразит в своем поле. Код данного сектора выглядит следующим образом

private void txtAdress_KeyPress( object sender, KeyPressEventArgs e)
<
if ( e .KeyChar == ( char )13)
<
webBrowseMain.Navigate(txtAdress.Text);
>
>

Здесь каждое нажатие клавиш перехватывается обработчиком события txtAdress_KeyPress и если нажата клавиша , то в действие вступает WebBrowser, методу webBrowseMain.Navigate передается URL который пользователь набрал в элементе txtAdress.
При запуске кнопки Back, Forward и Stop должный быть недоступными, поскольку они не имеют смысла при первоначальной загрузки. Позднее можно сообщать приложению когда надо активировать кнопки Back и Forward исходя от того где находится пользователь в стеке страниц. Когда страница загружается было бы уместном активировать кнопку Stop, но при завершении запретить доступ к ней.
Запрограммируем функциональность кнопок.

private void btnGo_Click( object sender, EventArgs e)
<
string url = txtAdress.Text;

webBrowseMain.Navigate( new Uri (url));
>

private void btnBack_Click( object sender, EventArgs e)
<
webBrowseMain.GoBack();
>

private void btnStop_Click( object sender, EventArgs e)
<
webBrowseMain.Stop();
>

private void btnHome_Click( object sender, EventArgs e)
<
webBrowseMain.GoHome();
>

private void btnRefresh_Click( object sender, EventArgs e)
<
webBrowseMain.Refresh();
>

private void btnForward_Click( object sender, EventArgs e)
<
webBrowseMain.GoForward();
>

По имени обработчика можно понять который обработчик принадлежит которой кнопке.

Когда форма загружается первоначально, событие Form1_Load отключает к соответствующим кнопкам. Чтобы включать и отключать доступ к кнопкам, приходится обращаться к множеству событий. Для активации кнопки Stop в начале загрузки необходимо добавить обработчик события Navigating.

private void webBrowseMain_Navigating( object sender, WebBrowserNavigatingEventArgs e)
<
btnStop.Enabled = true ;
>
После загрузки снова доступ к кнопке Stop отключим.

private void webBrowseMain_DocumentCompleted( object sender, WebBrowserDocumentCompletedEventArgs e)
<
btnStop.Enabled = false ;
>

Доступность кнопок Back и Forward зависит от возможности перехода в перед или назад в стеке страниц. В этом нам помогут события CanGoForwardChanged и CanGoBackChanged. И так во время инициализации определяем данные события.

webBrowseMain.CanGoForwardChanged+= new EventHandler (webBrowseMain_CanGoForwardChanged);
webBrowseMain.CanGoBackChanged+= new EventHandler (webBrowseMain_CanGoBackChanged);

и после вписываем события

private void webBrowseMain_CanGoForwardChanged( object sender, EventArgs e)
<
if (webBrowseMain.CanGoForward)
btnForward.Enabled = true ;
else
btnForward.Enabled = false ;
>

private void webBrowseMain_CanGoBackChanged( object sender, EventArgs e)
<
if (webBrowseMain.CanGoBack)
btnBack.Enabled = true;
else
btnBack.Enabled = false;
>

Вот и все, у нас уже есть свой собственный Браузер.
Ссылка для демо-программы тут.

Статья C# WebBrowser, часть 1: Получение и вывод данных

Pirnazar

Well-known member

При создании одного из своих приложений мне потребовалось реализовать в нём возможность скачивать файлы из Интернета, а так же просматривать web странички. Для решения задачи было принято решение использовать готовый control webBrowser, который дублировал и предоставлял функционал веб-браузера Internet Explorer и прекрасно подходил для решения моих задач. Оставалось только добавить данный элемент управления (Control) на форму и приступит к работе.

Так получилось, что когда в первый раз пришлось испытать данный контрол в действии, дома не было Интернета почти 2 недели, поэтому пришлось использовать локальный веб-сервер денвер. Для начала был создан тестовый сайт test.local, который состоял всего из одной простой html странички index.html.

Затем в программе Visual Studio было создано новое Windows Forms приложение, а на форму добавлено два элемента управления: Button и webBrowser. Так же было изменено стандартное имя кнопки на btnSend.

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

Получение и вывод данных в элемент управления webBrowser

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

Для начала вспоминаем, как мы обычно работаем с любым из веб-браузеров, например: опера, хром, IE и так далее.

1. Вводим адрес запрашиваемого ресурса в адресную строку браузера, например: codeby.net.

2. Нажимаем на клавиатуре кнопку Enter, после чего в окне браузера появляются или выводятся какие-то данные, например: картинки, видео, текст, — одним словом, контент.

На самом деле за этими двумя действиями скрыт большой объем работы, например: обмен запросами между браузером и сервером, преобразование доменного имени ресурса в ip адрес, многочисленные проверки, парсинг полученных данных от сервера, перед выводом в окно браузера и это лишь малая часть действий, которые выполняются после нажатия клавиши Enter.

Адресная строка веб-браузера

И так первое, что требуется сделать, это ввести адрес ресурса, обычно представленный в виде доменного имени, в моем случае test.local, в адресную строку браузера.

В данный момент на форме расположен control webBrowser, который только выводит окончательные результаты запросов. Чтобы получить возможность использовать адресную строку в своем приложении, можно добавить на форму control TextBox, в поле ввода которого будет вводиться адрес ресурса. Но, так как сайт у меня всего один, то пока что я решил ограничиться всего лишь полем типа string, в котором будет хранить адрес нужного мне ресурса.

Первая задача решена, переходим ко второй.

После того, как адрес был введён, нужно нажать клавишу Enter, после чего произойдет отправка запроса на сервер, в ответ на который будут получены какие-то данные, в моем случае обычная html разметка.

Если для ввода адреса Вы используете control TextBox, то для того, чтобы отловить нажатие клавиши Enter, можно использовать событие KeyDown.

Внутри обработчика данного события выполняется всего один метод Navigate, который осуществляет переход (запрос) по указанному нами адресу, взятому из поля url (TextBox), получает ответ от сервера, после чего выполняет загрузку полученных данных в контрол webBrowser.

Так как у меня на форме нет контрола TextBox, то воспользуюсь кнопкой btnSend, которая будет выполнять все те же действия, что и нажатая клавиша Enter, но только по клику мышкой. Для этого сначала подпишем кнопку btnSend на событие Click, внутри которого будет выполняться всё тот же метод Navigate. Если кликать лень, то так же подписываемся на событие KeyDown, только на этот раз для кнопки btnSend.

Читать еще:  Яндекс браузер выйти на всех устройствах

Вместо метода Navigate, так же можно использовать свойство Url, которое работает похожим образом
1). Сначала указываем адрес ресурса, куда будет осуществляться запрос
2). Происходит скрытый вызов метода Navigate.

Как видно запросить и получить данные, используя control webBrowser очень просто, для этого всего лишь потребовалось несколько строчек кода.

В следующей статье более подробно рассмотрим, что происходит во время выполнения метода Navigate.

Браузер от Mozilla в проекте на C#

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

При поисках движка, выбор пал на движок от Mozilla Gecko. И так получилось, что документация и примеры по его использованию (практически только на англоязычных ресурсах) были под C# или под VB.Net. Я свой выбор остановил на C#.

Проект будет разрабатываться в среде разработки – Visual Studio 2010. Для работы нам понадобится скачать и установить SDK (xulrunner) от Mozilla. Xulrunner можно скачать здесь. Рекомендую скачать версию 1.9.0.0. Далее нам необходимо скачать и установить библиотеку Skybound.GeckoFX.bin, которая является оберткой для xulrunner под язык программирования C#. И в этом случае я также рекомендую скачать версию библиотеки – 1.9.0.0.

Дело в том, что в некоторых SDK, есть баги. Я сам недавно столкнулся, когда потребовалось написать новый проект. Часть исходного кода взял со старого проекта, а вот какой версии xulrunner в нем использовался, я забыл. Получив баг при работе проекта и прочитав пару статей (сначала подозрение падало на Visual Studio 2010) я узнал, что в некоторых версиях есть существенные недоработки. Поэтому демонстрация подключения браузера, будет происходить на проверенной версии платформы xulrunner и проверенной версии библиотеки-обертки.

Если вы скачали все необходимое, то можно переходить к созданию демонстрационного проекта. Но для начала необходимо разобраться с подключением xulrunner. Из полученного архива с xulrunner нас интересует каталог bin. Создадим на диске “С” к примеру, каталог “XPCOM” и в него скопируем все содержимое каталога bin из архива с нашим SDK. Затем, необходимо распаковать архив с библиотекой Skybound.GeckoFX.bin. Далее открываем Visual Studio и создаем стандартный проект под windows. На следующем шаге, необходимо открыть панель элементов. После чего кликаем по ее области, правой клавишей мыши. Перед вами должна появиться форма с выбором элементов панели управления.

Переходим на вкладку “Компоненты .NET Framework” и нажимаем кнопку “Обзор”. Перед нами откроется стандартное диалоговое окно для выбора файла. В нем, то и выбираем файл Skybound.Gecko.dll, который тоже находится в каталоге bin, каталога Skybound.GeckoFX.bin.v1.9.x.x и нажимаем кнопку “OK”. В панели элементов во вкладке “Общие” должен появиться компонент – GeckoWebBrowser. После чего, компонент GeckoWebBrowser, нужно перенести на форму.

Теперь необходимо произвести инициализацию компонента. Для начала необходимо добавить пространство имен Skybound.Gecko. Для этого в начале кода, вставим строку:

Затем в модуле формы, в конструкторе формы, добавим следующий код:

И еще одну строку кода необходимо добавить в обработчик события активации формы:

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

В самом движке, есть все те возможности, которые присутствовали в Mozilla, а это около трех лет тому назад. Чего нельзя сказать о библиотеке-обертке. В этой версии, на основе которой построен демонстрационный проект, перечень возможностей очень и очень мал. Может быть и обратное: в xulrunner могут отсутствовать некоторые интерфейсы, реализация которых есть в установленной библиотеке-обертке. Посмотреть перечень доступных интерфейсов в xulrunner можно, если в каталоге с SDK открыть каталог bincomponents. Там должны присутствовать файлы с расширением *.xpt. Это и есть библиотеки, которые получились в результате компиляции файлов с описанием интерфейсов. На данный момент движок Mozilla фундаментально изменен и существуют библиотеки-обертки, гораздо более новых версий (возможно там функциональных особенностей будет намного больше). Что я понимаю под ограничением функциональных возможностей?

Вот, к примеру, какие возможности отсутствуют в Skybound.Gecko v1.9.0.0:

  • удаление cookie;
  • возможность генерации событий от мыши;
  • и еще много всего;

Согласитесь, такие функциональные особенности списать со счетов мы не можем. Конечно, ничего страшного в этом нет. Это все при желании реализовывается самостоятельно, путем добавления необходимых интерфейсов и реализацией некоторых методов. Документации в наше время достаточно, но не факт что у кого то, будет проблема идентичная вашей. Но в любом случае при желании разобраться можно.

О том как можно модифицировать браузер, смотрите здесь.

Комментариев: 2

Эдуард
Фев 06, 2018 @ 11:45:02

Существует, глобальный вопрос. как организовать скачивание файла с событием прогресса и окончания загрузки?

admin
Фев 09, 2018 @ 14:11:18

Скачайте здесь сборник решений. В свое время был неплохой форум по обсуждению geckofx.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Работа с разными браузерами

Учитывая широкое разнообразие средств, поддерживаемых разными браузерами, иногда непросто создать приложение, которое работает со всеми браузерами, обеспечивая наилучший из возможных пользовательский интерфейс. Платформа ASP.NET предлагает несколько средств, которые могут помочь в написании корректной разметки, работающей на разнообразных устройствах.

Класс HtmlTextWriter

Платформа ASP.NET предлагает очень разную разметку, которую видит клиент, так что один клиент получает HTML 3.2. другой — HTML 4.0. а третий — XHTML 1.1. Можно даже не подозревать о настолько существенных различиях.

Все это работает через класс HtmlTextWriter, который имеет несколько производных классов. Сам HtmlTextWriter спроектирован с учетом вывода разметки HTML 4.0. Но его производные классы отличаются: так, Html32TextWriter записывает разметку HTML 3.2 для клиентов нижнего уровня, a XhtmlTextWriter — разметку XHTML 1.1. Поскольку все эти классы унаследованы от HtmlTextWriter, вы вольны использовать в коде визуализации тот же самый базовый набор методов HtmlTextWriter. Однако реализация многих этих методов отличается, так что в зависимости от того, какой объект был получен, вывод может отличаться.

Читать еще:  Как восстановить удаленную историю в браузере

Например, предположим, что используется следующий код визуализации:

В этом случае ожидается такая разметка:

Но ниже показан результат, который будет получен от Html32TextWriter (исходя из предположения, что Html32TextWriter.ShouldPerformDivTableSubstitution равно true):

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

Аналогично, если производится наследование от WebControl для получения автоматической поддержки для свойств стиля, эта поддержка реализуется по-разному, в зависимости от визуализатора.

Из этого следует, что необходимо избегать написания низкоуровневой HTML-разметки (с использованием метода Write()), а вместо этого, где только возможно, использовать высокоуровневые методы (такие как RenderBeginTag(), RenderEndTag() и т.д.). В результате элементы управления станут более гибкими. ASP.NET создает и передает корректный HtmlTextWriter, который основан на функциональности браузера, запросившего страницу, и появится возможность адаптации HTML-разметки.

Эта проблема теперь не столь критична, как раньше, потому что большинство распространенных браузеров поддерживают XHTML. Тем не менее, это правило хорошего проектного решения, которое гарантирует надежную работоспособность кода в случае, когда ASP.NET будет обновлен для поддержки новых типов визуализации, которые не обладают пока широко распространенной поддержкой.

Определение браузера

Итак, каким же образом среда ASP.NET определяет тип класса записи текста, который подходит для конкретного клиента? Здесь все зависит от строки пользовательского агента, которая передается клиентом, когда он осуществляет запрос. ASP.NET пытается сопоставить эту строку с огромным каталогом известных браузеров. Вы можете найти этот каталог в C: [Каталог Windows] Microsoft.NETFramework [Версия] ConfigBrowsers. Там можно найти множество файлов .browser. Каждый представляет собой HTML-файл, который отображает строку пользовательского агента для установки возможностей и класса записи текста.

Каждый файл .browser имеет следующую базовую структуру:

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

Эта система может показаться довольно хрупкой. К сожалению, так оно и есть. Нет никаких гарантий, что не встретится браузер со строкой, которая не соответствует ни одному из известных шаблонов. Однако это неизбежный компромисс в слабо связанном мире Интернета, и создатели ASP.NET довольно неплохо поработали над тем, чтобы информация о браузерах, поставляемая с ASP.NET 4.0, была надежной и более полной, чем в предыдущих версиях. Настройки браузеров можно также подстраивать и даже добавлять новые определения различных строк пользовательских агентов.

Свойства браузеров

Определить конфигурацию текущего браузера можно с помощью свойства Browser объекта HttpRequest, которое возвращает ссылку на объект HttpBrowserCapabilities. (Получить строку user-agent можно также через свойство UserAgent.)

Когда клиент выполняет HTTP-запрос, создается объект HttpBrowserCapabilities, который заполняется информацией о возможностях браузера на основе соответствующего файла .browser. Информация, представленная в классе HttpBrowserCapabilities, включает вид браузера и его версию, поддерживает ли он выполнение сценариев на стороне клиента и т.д. Определив возможности браузера, можете скорректировать свой вывод для обеспечения различного поведения в разных браузерах. Таким образом, можно полностью раскрыть потенциальные возможности клиентов верхнего уровня, не нарушая работу низкоуровневых клиентов.

В таблице ниже перечислены свойства класса HttpBrowserCapabilities:

Получает строку браузера, которая была отправлена вместе с запросом в заголовке пользовательского агента

Получает старший номер версии клиентского браузера (например, для версии 4.5 это свойство вернет 4)

Получает младший номер версии клиентского браузера (например, для версии 4.5 это свойство вернет 5)

Получает имя и старший номер версии клиентского браузера

Получает полный номер версии клиентского браузера

Возвращает признак бета-выпуска клиентского браузера

Возвращает true, если клиент является браузером AOL (America Online)

Предоставляет имя платформы операционной системы, используемой клиентом

Возвращает true, если клиент является компьютером на базе Win16

Возвращает true, если клиент является компьютером на базе Win32

Предоставляет старший номер версии исполняющей среды .NET CLR, установленной на клиентском компьютере. Можно также использовать метод GetClrVersions() для извлечения информации обо всех версиях установленных CLR-сред. Эта настройка важна, только если на веб-странице есть встроенные элементы управления .NET Windows Forms. Клиентские браузеры не нуждаются в CLR для запуска обычных страниц ASP.NET

Возвращает true, если клиентский браузер поддерживает элементы управления ActiveX

Возвращает true, если клиентский браузер поддерживает фоновый звук

Возвращает true, если клиентский браузер поддерживает cookie-наборы

Возвращает true, если клиентский браузер поддерживает фреймы

Возвращает true, если клиентский браузер поддерживает таблицы HTML

Указывает на то, поддерживает ли браузер JavaScript. Это свойство считается устаревшим и вместо него рекомендуется проверять свойство EcmaScriptVersion

Возвращает true, если клиентский браузер поддерживает VBScript

Возвращает true, если клиентский браузер поддерживает Java-аплеты

Получает номер версии сценария ECMA, поддерживаемой клиентским браузером

Получает версию Microsoft HTML DOM, поддерживаемую клиентским браузером

Возвращает true, если клиентским браузером является поисковый робот

Класс HttpBrowserCapabilities имеет одно бросающееся в глаза ограничение — он может определить только ожидаемую встроенную функциональность браузера. Он не может определить текущее состояние этой функциональности.

Например, предположим, что оценивается поддержка JavaScript клиентской стороны, предоставляемая браузером. Если браузером, приславшим запрос, является Google Chrome, это свойство вернет true, поскольку у него есть поддержка JavaScript клиентской стороны. Однако даже если у пользователя средства поддержки сценариев отключены, свойство JavaScript все равно вернет true. Другими словами, есть возможность узнать не то, что браузер должен делать, а то, что он может делать.

Фактически все, что на самом деле делает ASP.NET — это читает информацию пользовательского агента, переданную от браузера на сервер во время запроса, и сравнивает эту строку с предопределенной информацией в файлах .browser. В файлах .browser перечислены возможности браузера, такие как функциональность поддержки сценариев, стилей, фреймов и т.д. К сожалению, клиент не присылает сведений о том, как сконфигурирован браузер.

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

Читать еще:  Как выбрать браузер

Например, с помощью cookie-наборов можно (имея две веб-страницы) попробовать установить cookie-набор и затем попытаться прочитать его. Если это не удастся, значит, поддержка cookie-наборов отключена. Обходной путь подобного рода можно использовать для проверки других свойств, таких как поддержка JavaScript. Например, можно добавить на страницу фрагмент кода JavaScript, который записывает значение переменной формы, и затем проверить это значение на сервере.

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

Изменение определения типа браузера

Платформа ASP.NET предоставляет возможность явно задать, как будет визуализироваться страница, вместо того, чтобы полагаться на автоматическое определение браузера. Трюк состоит в установке свойства Page.ClientTarget, либо программно (на стадии Page.PreInit>, либо декларативно (с использованием директивы Page). В случае установки свойства ClientTarget автоматическое определение браузера отключается и для остальной части запроса ASP.NET использует установки браузера, указанные вами.

Единственный нюанс, связанный с использованием свойства ClientTarget, состоит в возможности использовать только определенные псевдонимы. Каждый псевдоним отображается на специфическую строку пользовательского агента (и установка браузера для этого пользовательского агента объявлена в соответствующем файле .browser).

Например, предположим, что необходимо проверить, как страница будет визуализирована в устаревшем браузере вроде Internet Explorer 6. Для начала потребуется создать псевдоним в разделе , который отображает правильную строку пользовательского агента на любое выбранное имя. В данном случае псевдонимом будет ie6:

Теперь можно заставить страницу использовать этот псевдоним и визуализировать себя, как будто бы запрос поступил от Internet Explorer 6, установив в ie6 атрибут ClientTarget директивы Page. Вот как это делается:

Адаптивная визуализация

В идеале удается сгенерировать разметку, которая будет работать во всех основных браузерах. Но в некоторых случаях придется писать специфическую для конкретного браузера логику визуализации. В худшем случае это выглядит примерно так:

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

Любой элемент управления связывается с адаптером в файле .browser. Например, можно создать адаптер FirefoxSlideMenuAdapter, который изменяет код визуализации элемента управления SlideMenu так, что он лучше работает с браузерами Firefox. Затем понадобится отредактировать файл mozilla.browser, специально указав, что данный адаптер должен использоваться с браузерами Firefox.

Адаптер элемента управления работает за счет включения в процесс визуализации. Платформа ASP.NET вызывает адаптер на каждой стадии жизненного цикла веб-элемента управления, что позволяет адаптеру вмешиваться в процесс визуализации и обрабатывать прочие детали, такие как логику состояния представления, специфическую для устройства.

Чтобы создать адаптер, унаследуйте новый класс от System.Web.UI.Adapters.ControlAdapter (если специальный элемент управления унаследован от Control) или от System.Web.UI.WebControls.Adapters.WebControlAdapter (если специальный элемент управления унаследован от WebControl). Затем реализуйте необходимую функциональность, переопределяя нужные методы. Каждый метод соответствует методу класса специального элемента управления, и если метод в адаптере элемента управления переопределен, метод адаптера будет использоваться вместо метода элемента управления.

Как и в случае серверных элементов управления, адаптеры должны быть помещены в отдельную DLL-сборку. Если адаптеры относительно просты, их можно поместить в ту же самую сборку, которая содержит элементы управления. Однако если адаптеры сложны и спроектированы для поддержки специализированных сценариев использования, предпочтительнее поместить их в отдельную сборку.

Например, в ControlAdapter могут быть переопределены такие методы, как OnInit(), Render() и RenderChildren(). В WebControlAdapter можно также переопределить RenderBeginTag(), RenderEndTag() и RenderContents().

Alex_R

суббота, 3 сентября 2011 г.

Пишем простенький браузер на C#

Создаём свой веб браузер с помощью Windows Forms C#

Оговорюсь сразу что писать с нуля этот браузер мы не будем,наш браузер будет работать на движке IE,поэтому про его быстродействие можно и не думать 🙂

Итак заходим в VS C# и выбираем создать новый проект Windows Forms

Придумываем название проэкту и жмём ок.

Появившеюся форму можно растягивать как хотим,что мы и сделаем дабы увеличить наше окошко.

1.Далее из ToolBox-а выбираем и перетаскиваем на форму элемент управления WebBrouser.
Если у вас WebBrouser занял как у меня всё место на форме то жмём на треугольничке в правом верхнем углу левой кнопкой мыши -> Unlock in Parent Container,получили форму вида.

Если же пред вами веб браузер предстал в таком виде как на скрине ниже,то ничего не делайте.

3.Поместим её вверхней части экрана.Далее кликаем правой кнопкой мыши на текстбоксе и вызываем свойства(properties) находим свойство Dock и устанавливаем его значение в Top.

4.Далее вспоминаем как мы делали шаг №1,и кликаем на треугольничке на элементе управления веббраузер(WebBrouser) и жмём Dock in Parent Container.

Теперь наша форма приняла вид:

По умолчанию Visual Studio дало текстбоксу и веббраузеру имена textBox1 webBrouser1,хорошим стилем программирования считается менять такие имена на более понятные,то есть имя textBox1 не несёт в себе никакого смысла,вот если я изменю это имя на textBoxUrl,то любой человек догадается что этот текстбокс предназначен для введения веб адреса.Также свойство Text элемента управления textBoxUrl я изменил с значения пустой строки на фразу Enter web adress,для того чтобы даже самый несмышлённый пользователь понял что в это поле нужно ввести название веб адреса.
Имя webBrouser1 я поменял на webBrouser,как по мне поскольку у нас будет использоваться только один элемент управления то индекс 1 можно и убрать.

Скрины приведены ниже:

Пока что наш браузер будет выполнять только одну функцию: после того как пользователь ввёл веб адрес и нажал на клавишу «Enter» браузер загрузит выбранную пользователем страницу.

5.Заходим в свойства текстбокса и переключаемся в роздел Events(события)

Ссылка на основную публикацию
Adblock
detector