C#  -  Criando um navegador web com abas


 Neste artigo vou mostrar como podemos criar um navegador com abas ao estilo FireFox usando o controle WebBrowser.

Para começar vamos recordar alguns conceitos sobre o controle WebBrowser que iremos usar neste artigo.

O controle WebBrowser permite que você hospede páginas da Web e outros documentos habilitados para navegadores em suas aplicações Windows Forms.

O WebBrowser mantém uma lista de histórico de todas as páginas da Web visitadas durante uma sessão de navegação. Ao definir a propriedade Url, ocorre navegação para a URL especificada e o controle a adiciona ao final da lista do histórico.

A seguir o controle armazena as páginas Web dos sites visitados recentemente em um cache no disco rígido local. Cada página pode especificar uma data de expiração que indica quanto tempo ele permanecerá no cache. Assim,
quando o controle navega para uma página, ele economiza tempo ao exibir uma versão em cache, se disponível, em vez de baixar a página novamente.

Você pode usar a propriedade Refresh para forçar o WebBrowser a recarregar a página atual por meio de download, garantindo que o controle exibe a versão mais recente.

As principais propriedades/métodos do controle WebBrowser são :

Url - Obtém ou define o URL do documento atual. (equivale a chamar o método Navigate e passar URL especificada)
Navigate - Carrega o documento no local especificado
GoBack – Navega para a página anterior no histórico de navegação
GoForward - Navega para a próxima página no histórico de navegação
GoHome - Navega para a home page do usuário atual. (Opções Internet)
GoSearch - Navega para a página de pesquisa padrão do usuário atual.
Stop - Cancela qualquer navegação pendente e pára quaisquer elementos de página dinâmica, como, por exemplo, animações e sons de fundo.
Refresh - Recarrega o documento atualmente exibido no controle
Print - Imprime o documento exibido no momento no WebBrowser usando as configurações de página e de impressão atual.

Usando esses recursos do WebBrowser vamos criar um simples navegador com abas usando também o controle TabControl que gerencia guias onde cada página pode hospedar controles filhos diferentes. No exemplo as guias irão hospedar instância da classe WebBrowser.

Recursos Usados

Criando o projeto Windows Forms

Abra o VS 2015 Community e crie um novo projeto (File-> New Project) usando a linguagem VB .NET e o template Windows Forms Application.

Informe um nome a seu gosto. Eu vou usar o nome NavegadorWebAbas;

No formulário padrão Form1.cs inclua os controles :

  • 2 Buttons - btnRetorna e btnAvanca (defina a propriedade Image para usar as imagens )

  • 1 TextBox - txtUrl

  • 2 Buttons - btnIr e btnNovaGuia

Disponha os controles conforme o leiaute da figura abaixo:

Vamos agora definir o código do formulário usando os eventos dos controles e a classe WebBrowser.

Definindo o código do projeto

1- Código do evento Load do formulário

     private void Form1_Load(object sender, EventArgs e)
     {
           NovaGuia();
    }

2- Código do botão Nova Guia

    private void btnNovaGuia_Click(object sender, EventArgs e)
    {
        NovaGuia();
    }

3- Código do Método NovaGuia

Aqui criamos uma nova guia e definimos uma instância da classe WebBrowser usando o método Navigate  que carrega o documento no local especificado, no caso a url para página do Google.

        private void NovaGuia()
        {
            TabPage tab = new TabPage();
            tab.Text = "Nova Guia";

            tabControl1.Controls.Add(tab);
            tabControl1.SelectTab(tabControl1.TabCount - 1);

            WebBrowser browser = new WebBrowser() { ScriptErrorsSuppressed = true };

            browser.Parent = tab;
            browser.Dock = DockStyle.Fill;
            browser.Navigate("https://www.google.com");

            txtUrl.Text = "https://www.google.com";

            browser.DocumentCompleted += Browser_DocumentCompleted;
        }

4- Código do evento DocumentCompleted

O evento DocumentCompleted ocorre quando o controle termina de carregar um documento. O evento é disparado quando a página foi completamente carregada.

  private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
   {
            WebBrowser browser = tabControl1.SelectedTab.Controls[0] as WebBrowser;
            if (browser != null)
                tabControl1.SelectedTab.Text = browser.DocumentTitle;
  }

5- Código do evento Click do botão Retornar

    private void btnRetorna_Click(object sender, EventArgs e)
     {
            WebBrowser browser = tabControl1.SelectedTab.Controls[0] as WebBrowser;
            if (browser != null)
            {
                browser.Navigate(txtUrl.Text);
            }
     }

6- Código do evento Click do botão Avançar

Neste código usamos o método GoForward que navega para a próxima página no histórico de navegação

   private void btnAvanca_Click(object sender, EventArgs e)
    {
            WebBrowser browser = tabControl1.SelectedTab.Controls[0] as WebBrowser;
            if (browser != null)
            {
                if (browser.CanGoForward)
                    browser.GoForward();
            }
    }

Executando o projeto teremos o seguinte resultado:

Pegue o projeto aqui :  WebAbas.zip

"Porque as suas coisas invisíveis, desde a criação do mundo, tanto o seu eterno poder, como a sua divindade, se entendem, e claramente se vêem pelas coisas que estão criadas, para que eles fiquem inescusáveis"
Romanos 1:20

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

Referências:


José Carlos Macoratti