ในกรณีนี้
สรุป
โปรแกรมประยุกต์ Visual Basic .NET ที่โฮสต์การควบคุมเว็บเบราว์เซอร์สามารถจัดการเหตุการณ์NewWindow2สามารถตรวจจับการเรียกwindow.openที่สร้างขึ้น โดยสคริปต์ อย่างไรก็ตาม ไม่ชัดเจนทันทีแอพลิเคชันของคุณจะได้ค่าความกว้างและความสูงที่จะถูกส่งผ่านอาร์กิวเมนต์คุณลักษณะของwindow.openเพื่อให้โฮสต์เว็บเบราว์เซอร์สามารถปรับขนาดหน้าต่างได้อย่างถูกต้อง บทความนี้สาธิตวิธีการขอรับใหม่ความกว้างและความสูงของตัวควบคุมเว็บเบราว์เซอร์และวิธีการปรับขนาดของฟอร์มของคุณให้สอดคล้องกัน
ข้อกำหนด
รายการต่อไปนี้สรุปฮาร์ดแวร์ ซอฟต์แวร์ โครงสร้างเครือข่าย และ Service Pack ที่แนะนำให้คุณต้องมี:
-
Microsoft Visual Studio .NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 หรือรุ่นที่ใหม่กว่า
สร้างตัวอย่าง
ส่วนนี้อธิบายวิธีการโฮสต์ตัวควบคุมเว็บเบราว์เซอร์ในโปรแกรมประยุกต์ Visual Basic .NET วิธีการจัดการกับเหตุการณ์NewWindow2ของตัวควบคุมเว็บเบราว์เซอร์ และวิธีการจัดการกับWindowSetWidthและเหตุการณ์WindowSetHeight ปรับขนาดของโปรแกรมประยุกต์ของคุณ
-
สร้างโปรแกรมประยุกต์ Windows ใหม่ใน Visual Basic ดังนี้:
-
เริ่ม Visual Studio .NET
-
บนเมนูแฟ้มชี้ไปที่สร้างแล้ว คลิ กโครงการ
-
ภายใต้ชนิดโครงการคลิกโครงการ Visual Basic ภายใต้แม่แบบคลิกแอพลิเคชันของ Windows
-
-
ในกล่องเครื่องมือ คลิกทั่วไปคลิกขวาในกล่องเครื่องมือ แล้ว คลิ กเครื่องมือที่กำหนดเอง
-
บนแท็บคอมโพเนนต์ COMเลือกกล่องกาเครื่องหมายMicrosoft เว็บเบราว์เซอร์และจากนั้น คลิกตกลง
-
ในกล่องเครื่องมือ คลิกสองครั้งในหน้าต่าง 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
ตรวจสอบว่า โปรแกรมทำ
-
สร้างแอพลิเคชัน
-
เปิดแผ่นจดบันทึก สร้างแฟ้มใหม่ที่มีชื่อว่า 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++สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวควบคุมเว็บเบราว์เซอร์ ตลอดจนวิธีการ คุณสมบัติ และเหตุการณ์ต่าง ๆ ที่คุณแส อ้างถึงเว็บไซต์ต่อไปนี้ของ Microsoft:
ตัวควบคุมเว็บเบราว์เซอร์: การอ้างอิงสำหรับนักพัฒนาพื้นฐาน Visualhttp://msdn2.microsoft.com/en-us/library/Aa752043.aspxสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาเว็บโซลูชันสำหรับ Microsoft Internet Explorer แวะไปเว็บไซต์ต่อไปนี้ของ Microsoft:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep