В ТАЗИ ЗАДАЧА
Обобщена информация
Visual Basic .NET приложения, които хостват контрола WebBrowser може да обработва събитието NewWindow2 да window.open обаждане, генериран от скрипт. Обаче не е ясно как приложението може да получите ширината и височината на стойностите, които се предават към аргумента функции на window.open така че хост уеб браузър може да преоразмерите прозореца правилно. Тази статия показва как да получите нов ширината и височината на контрола WebBrowser и как да промените размера на формуляр по съответния начин.
Изисквания
Следният списък описва препоръчителните хардуер, софтуер, мрежова инфраструктура и сервизни пакети, които се нуждаете от:
-
Microsoft Visual Studio .NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 или по-късно
Създаване на примерни
Този раздел описва как да хоствате контрола WebBrowser в приложение на Visual Basic .NET, как да се справят с NewWindow2 събитие на контрола WebBrowser и след това как да се справят с WindowSetWidth и WindowSetHeight събития Преоразмеряване на вашето приложение.
-
Създаване на нов Windows приложение в Visual Basic както следва:
-
Стартиране на Visual Studio .NET.
-
В менюто файл посочете Създайи щракнете върху проекта.
-
Под Типове проектищракнете върху Проекти на Visual Basic. Под шаблонищракнете върху Windows приложение.
-
-
В кутията с инструменти щракнете върху Общищракнете с десния бутон в кутията с инструменти и изберете Персонализиране инструменти.
-
В раздела COM компоненти Поставете отметка в квадратчето Microsoft уеб браузър и след това щракнете върху OK.
-
В кутията с инструменти щракнете двукратно върху в прозорец на Explorer.
-
Добавяне на бутон и контрола текстово поле във вашия формуляр.
-
Щракнете двукратно върху бутона, за да видите изпълнението на събитието 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
Проверете дали работи
-
Компилация на приложението.
-
Отворете Notepad. Създайте нов файл с име 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 и след това щракнете върху бутона. Забележете, че корпоративен уеб сайта на Microsoft се отваря в нов екземпляр на приложението. Формулярът се преоразмерява според функциите, които се предават с покана да window.open.
Препратки
За допълнителна информация щракнете върху следните номера на статии в базата знания на Microsoft:
311284 как да: обработка на събития на документ във Visual Basic .NET приложение
259963 HOWTO: получите ширина и височина доставят Window.open вътрешната Visual C++ WebBrowser хостЗа повече информация относно контрола WebBrowser, както и методите свойствата и събития, които излага, се отнася към следния уеб сайт на Microsoft:
Управление на уеб браузър: Справка за разработчиците на Visual Basichttp://msdn2.microsoft.com/en-us/library/Aa752043.aspxЗа повече информация за разработване на уеб базирани решения за Microsoft Internet Explorer посетете следните уеб сайтове на Microsoft:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep