В ЭТОЙ ЗАДАЧЕ
Аннотация
Visual Basic .NET приложения, размещающие элемент управления WebBrowser можно обработать событие NewWindow2 для перехвата window.open вызов, созданного сценарием. Тем не менее это не очевидно, получение значения ширины и высоты, которые передаются функции аргумент window.open таким образом, чтобы узел WebBrowser корректно изменять размеры окна приложения. В этой статье показано, как получить новую ширину и высоту элемента управления WebBrowser и как можно соответствующим образом изменить размер формы.
Требования
В приведенном ниже списке перечислены требования к оборудованию, сети, программному обеспечению и пакетам обновления.
-
Microsoft Visual Studio .NET
-
Пакет обновления Internet Explorer 5.5 2 или более поздней версии
Создание образца
В этом разделе описывается, как разместить элемент управления WebBrowser в приложениях Visual Basic .NET, как обрабатывать событие NewWindow2 элемента управления WebBrowser и способ обработки события WindowSetHeight и WindowSetWidth Изменение размера приложения.
-
Создайте новое приложение Windows в Visual Basic следующим образом:
-
Запустите Visual Studio .NET.
-
В меню файл выберите пункт Создать и выберите Проект.
-
В области Типы проектоввыберите Проекты Visual Basic. В области Шаблонывыберите Приложение Windows.
-
-
В панели элементов щелкните Общие, щелкните правой кнопкой мыши в области элементов и выберите команду Настройка панели элементов.
-
На вкладке Компоненты COM установите флажок Веб-обозревателем Майкрософт и нажмите кнопку ОК.
-
В панели элементов дважды щелкните в окне обозревателя.
-
Добавьте в форму элемент управления Button и элемент управления TextBox .
-
Дважды щелкните кнопку для просмотра реализации события onClick кнопки в окне кода и добавьте следующий код:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub
Этот код позволяет просматривать на URL-адрес, указанный в текстовом поле.
-
Добавьте следующий код для написания функции обработчика для 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
-
Добавьте следующий код для написания функции обработчика для 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
-
Добавьте следующий код для написания функции обработчика для 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
Полный пример кода
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
Убедитесь, что он работает
-
Постройте приложение.
-
Откройте программу «Блокнот». Создайте новый файл с именем Test.htm и затем добавьте следующий код:
<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>
-
Сохраните Test.htm на веб-сервере.
-
Запустите приложение.
-
Нажмите кнопку Обзор, чтобы страница Test.htm Обратите внимание, что корпоративный веб-узел откроется в новом экземпляре приложения. По параметрам, которые переданы при вызове window.openизменения размеров формы.
Ссылки
Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
311284 как: обрабатывать события документа в приложении Visual Basic .NET
Методические УКАЗАНИЯ 259963 : получить ширину и высоту предоставляемое Window.open внутри узла WebBrowser Visual C++Дополнительные сведения об элементе управления WebBrowser, а также методы свойства и события, которые он предоставляет, обратитесь на следующий веб-узел корпорации Майкрософт:
Элемент управления WebBrowser: Ссылка для разработчиков Visual Basichttp://msdn2.microsoft.com/en-us/library/Aa752043.aspxДополнительные сведения о разработке веб-приложений для Microsoft Internet Explorer посетите следующий веб-узел Майкрософт:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep