Для того, чтобы создать браузер необходимо создать приложение Windows Forms, которое включает в себя элементы управления Button, TextBox, Panel и конечно WebBrowser. Конечный пользователь должен набрать адрес веб страницы, а наш браузер должен отобразить документ.
И так приведу список всех элементов.
Когда пользователь наберет адрес и нажмет <ENTER> WebBrowser извлечет запрошенную страницу и отобразит в своем поле. Код данного сектора выглядит следующим образом
private void txtAdress_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
webBrowseMain.Navigate(txtAdress.Text);
}
}
Здесь каждое нажатие клавиш перехватывается обработчиком события txtAdress_KeyPress и если нажата клавиша <ENTER>, то в действие вступает WebBrowser, методу webBrowseMain.Navigate передается URL который пользователь набрал в элементе txtAdress.
При запуске кнопки Back, Forward и Stop должный быть недоступными, поскольку они не имеют смысла при первоначальной загрузки. Позднее можно сообщать приложению когда надо активировать кнопки Back и Forward исходя от того где находится пользователь в стеке страниц. Когда страница загружается было бы уместном активировать кнопку Stop, но при завершении запретить доступ к ней.
Запрограммируем функциональность кнопок.
private void btnGo_Click(object sender, EventArgs e)
{
string url = txtAdress.Text;
if (!url.StartsWith("http://") &&
!url.StartsWith("https://"))
{
url = "http://" + url;
}
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;
}
Вот и все, у нас уже есть свой собственный Браузер.
Ссылка для демо-программы тут...
И так приведу список всех элементов.
Элемент
|
Свойство
|
Значение
|
Form
|
Name
|
Form1
|
Text
|
MyBrowser
|
|
WindowState
|
Maximized
|
|
Panel
|
Name
|
panelMain
|
Doc
|
Top
|
|
TextBox
|
Name
|
txtAdress
|
Text
|
http://
|
|
Button
|
Name
|
btnBack
|
Text
|
BACK
|
|
Button
|
Name
|
btnForward
|
Text
|
FORWARD
|
|
Button
|
Name
|
btnStop
|
Text
|
STOP
|
|
Button
|
Name
|
btnRefresh
|
Text
|
REFRESH
|
|
Button
|
Name
|
btnHome
|
Text
|
HOME
|
|
Button
|
Name
|
btnPrint
|
Text
|
Print
|
|
Button
|
Name
|
btnGo
|
Text
|
Go
|
|
WebBrowser
|
Name
|
webBrowseMain
|
Dock
|
Bottom
|
|
ScriptErrorSuppressed
|
True
|
Когда пользователь наберет адрес и нажмет <ENTER> WebBrowser извлечет запрошенную страницу и отобразит в своем поле. Код данного сектора выглядит следующим образом
private void txtAdress_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
webBrowseMain.Navigate(txtAdress.Text);
}
}
Здесь каждое нажатие клавиш перехватывается обработчиком события txtAdress_KeyPress и если нажата клавиша <ENTER>, то в действие вступает WebBrowser, методу webBrowseMain.Navigate передается URL который пользователь набрал в элементе txtAdress.
При запуске кнопки Back, Forward и Stop должный быть недоступными, поскольку они не имеют смысла при первоначальной загрузки. Позднее можно сообщать приложению когда надо активировать кнопки Back и Forward исходя от того где находится пользователь в стеке страниц. Когда страница загружается было бы уместном активировать кнопку Stop, но при завершении запретить доступ к ней.
Запрограммируем функциональность кнопок.
private void btnGo_Click(object sender, EventArgs e)
{
string url = txtAdress.Text;
if (!url.StartsWith("http://") &&
!url.StartsWith("https://"))
{
url = "http://" + url;
}
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;
}
Вот и все, у нас уже есть свой собственный Браузер.
Ссылка для демо-программы тут...
Скриншот браузера
Комментариев нет:
Отправить комментарий