NESTA TAREFA
Resumo
Aplicações do Visual Basic .NET que hospedem o controlo WebBrowser podem processar o evento NewWindow2 para detectar uma chamada de window. Open que é gerada pelo script. No entanto, não é evidente como a aplicação pode obter os valores de largura e altura que são transmitidos para o argumento de funcionalidades do window. Open para que o anfitrião WebBrowser pode redimensionar a janela correctamente. Este artigo demonstra como obter a nova largura e altura do controlo WebBrowser e como redimensionar, por conseguinte, o formulário.
Requisitos
A lista seguinte descreve o hardware, o software, a infraestrutura de rede e os service packs recomendados de que necessita:
-
Microsoft Visual Studio .NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 ou posterior
Criar a amostra
Esta secção descreve como hospedar o controlo WebBrowser numa aplicação Visual Basic .NET, como processar o evento NewWindow2 do controlo WebBrowser e, em seguida, como processar a WindowSetWidth e os eventos de WindowSetHeight a Redimensione a aplicação.
-
Crie uma nova aplicação de Windows no Visual Basic do seguinte modo:
-
Inicie o Visual Studio .NET.
-
No menu ficheiro , aponte para Novoe, em seguida, clique em projecto.
-
Em Tipos de projecto, clique em Projectos do Visual Basic. Em modelos, clique em Aplicação do Windows.
-
-
Na caixa de ferramentas, clique em Geral, com o botão direito na caixa de ferramentas e, em seguida, clique em Personalizar a caixa de ferramentas.
-
No separador ' Componentes COM , seleccione a caixa de verificação do Microsoft Web Browser e, em seguida, clique em OK.
-
Na caixa de ferramentas, faça duplo clique na janela do Explorador.
-
Adicione um controlo de botão e um controlo de caixa de texto ao formulário.
-
Faça duplo clique no botão para ver a execução do evento AoFazerClique do botão na janela de código e, em seguida, adicione o seguinte código:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub
Este código permite-lhe navegar para o URL que especificou na caixa de texto.
-
Adicione o seguinte código para escrever a função de rotina de tratamento para NewWindow2:
Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True End Sub
-
Adicione o seguinte código para escrever a função de rotina de tratamento para WindowSetHeight:
Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub
-
Adicione o seguinte código para escrever a função de rotina de tratamento para WindowSetWidth:
Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End Sub
Exemplo de código completa
Public Class Form1 Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code " 'Omitted#End Region Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 'MessageBox.Show(AxWebBrowser1.Height & ":" & AxWebBrowser1.Width) 'MessageBox.Show(doc.body.innerHTML) Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True 'frmWB.AxWebBrowser1.Navigate2("about:blank") e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True 'MessageBox.Show(frmWB.AxWebBrowser1.Height & ":" & frmWB.AxWebBrowser1.Width) End Sub Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight 'MessageBox.Show("In SetHeight" & Me.Height & ":" & e.height) Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth 'MessageBox.Show("In SetWidth" & Me.Width & ":" & e.width) Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End SubEnd Class
Verificar se funciona
-
Compilar a aplicação.
-
Abra o bloco de notas. Criar um novo ficheiro chamado Test.htm e, em seguida, adicione o seguinte código:
<HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"><TITLE></TITLE><script>function openWin(){var win;win = window.open("http://www.microsoft.com","blah","width=600, height=600");}</script></HEAD><BODY><button onClick=openWin()>Open Window</button></BODY></HTML>
-
Guarde Test.htm no servidor Web.
-
Execute a aplicação.
-
Navegue para a página de Test.htm e, em seguida, clique no botão. Repare que o site da Microsoft na Web da empresa é aberta uma nova instância da aplicação. O formulário é redimensionado de acordo com as funcionalidades que transmitido com a chamada para o window. Open.
Referências
Para obter informações adicionais, clique nos números de artigo abaixo para visualizar os artigos na Microsoft Knowledge Base:
311284 como: processar eventos do documento numa aplicação do Visual Basic .NET
259963 como: obter a largura e altura fornecido ao interior do Window. Open o anfitrião de WebBrowser do Visual C++Para mais informações sobre o controlo WebBrowser, bem como os métodos, propriedades e os eventos que expõe, consulte o seguinte Web site da Microsoft:
Controlo do WebBrowser: Uma referência para programadores de base Visualhttp://msdn2.microsoft.com/en-us/library/Aa752043.aspxPara mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes Web sites da Microsoft:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep