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

Пользовательский поиск

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

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

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





Элемент
Свойство
Значение
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;
        }

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






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

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