При создании одного из своих приложений мне потребовалось реализовать в нём возможность скачивать файлы из Интернета, а так же просматривать 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, в котором будет хранить адрес нужного мне ресурса.
Первая задача решена, переходим ко второй.
webBrowser Navigate
После того, как адрес был введён, нужно нажать клавишу Enter, после чего произойдет отправка запроса на сервер, в ответ на который будут получены какие-то данные, в моем случае обычная html разметка.
Если для ввода адреса Вы используете control TextBox, то для того, чтобы отловить нажатие клавиши Enter, можно использовать событие KeyDown.
Внутри обработчика данного события выполняется всего один метод Navigate, который осуществляет переход (запрос) по указанному нами адресу, взятому из поля url (TextBox), получает ответ от сервера, после чего выполняет загрузку полученных данных в контрол webBrowser.
Так как у меня на форме нет контрола TextBox, то воспользуюсь кнопкой btnSend, которая будет выполнять все те же действия, что и нажатая клавиша Enter, но только по клику мышкой. Для этого сначала подпишем кнопку btnSend на событие Click, внутри которого будет выполняться всё тот же метод Navigate. Если кликать лень, то так же подписываемся на событие KeyDown, только на этот раз для кнопки btnSend.
либо так
webBrowser.Url
Вместо метода Navigate, так же можно использовать свойство Url, которое работает похожим образом
1). Сначала указываем адрес ресурса, куда будет осуществляться запрос
2). Происходит скрытый вызов метода Navigate.
Как видно запросить и получить данные, используя control webBrowser очень просто, для этого всего лишь потребовалось несколько строчек кода.
В следующей статье более подробно рассмотрим, что происходит во время выполнения метода Navigate.
Читайте также:
Так получилось, что когда в первый раз пришлось испытать данный контрол в действии, дома не было Интернета почти 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, в котором будет хранить адрес нужного мне ресурса.
C#:
string url = @"http://test.local";
webBrowser Navigate
После того, как адрес был введён, нужно нажать клавишу Enter, после чего произойдет отправка запроса на сервер, в ответ на который будут получены какие-то данные, в моем случае обычная html разметка.
Если для ввода адреса Вы используете control TextBox, то для того, чтобы отловить нажатие клавиши Enter, можно использовать событие KeyDown.
C#:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter & textBox1.Text != "")
{
webBrowser1.Navigate(textBox1.Text.Trim());
}
}
Так как у меня на форме нет контрола TextBox, то воспользуюсь кнопкой btnSend, которая будет выполнять все те же действия, что и нажатая клавиша Enter, но только по клику мышкой. Для этого сначала подпишем кнопку btnSend на событие Click, внутри которого будет выполняться всё тот же метод Navigate. Если кликать лень, то так же подписываемся на событие KeyDown, только на этот раз для кнопки btnSend.
C#:
//код для вставки в событие Click
webBrowser1.Navigate(url);
C#:
webBrowser1.Navigate(new Uri(url));
webBrowser.Url
Вместо метода Navigate, так же можно использовать свойство Url, которое работает похожим образом
1). Сначала указываем адрес ресурса, куда будет осуществляться запрос
2). Происходит скрытый вызов метода Navigate.
C#:
//поле типа Uri
Uri url = new Uri("http://test.local");
//код для вставки в событие Click
webBrowser1.Url = url;
В следующей статье более подробно рассмотрим, что происходит во время выполнения метода Navigate.
Читайте также: