webbrowser 控件實現WinForm與WebForm交互
WebBrowser 控件可以讓你裝載Windows Form 應用程序中的 Web 網頁和其它采用瀏覽器的文件。可以使用webbrowser 控件將現有的web框架控制項加入至 Windows Form 客戶端應用程序。
還是直接看代碼吧。
上面的代碼是將 我們園子的主頁載入到WebBrowser控件中。如果我們想要在應用程式中產生自己的網頁內容,可以設定DocumentText屬性。也可以通過Document屬性來處理目前的網頁內容。如下代碼是使用 DocumentText 屬性,顯示網頁內容。並用Document屬性來處理所顯示的網頁。
![技術分享圖片](/img/None.gif)
2
![技術分享圖片](/img/ExpandedBlockStart.gif)
3
![技術分享圖片](/img/InBlock.gif)
4
![技術分享圖片](/img/InBlock.gif)
5
![技術分享圖片](/img/InBlock.gif)
6
![技術分享圖片](/img/InBlock.gif)
7
![技術分享圖片](/img/InBlock.gif)
8
![技術分享圖片](/img/InBlock.gif)
9
![技術分享圖片](/img/InBlock.gif)
10
![技術分享圖片](/img/InBlock.gif)
11
![技術分享圖片](/img/InBlock.gif)
12
![技術分享圖片](/img/InBlock.gif)
13
![技術分享圖片](/img/InBlock.gif)
14
![技術分享圖片](/img/InBlock.gif)
15
![技術分享圖片](/img/InBlock.gif)
16
![技術分享圖片](/img/InBlock.gif)
17
![技術分享圖片](/img/InBlock.gif)
18
![技術分享圖片](/img/InBlock.gif)
19
![技術分享圖片](/img/ExpandedBlockEnd.gif)
20
![技術分享圖片](/img/None.gif)
21
![技術分享圖片](/img/None.gif)
22
![技術分享圖片](/img/ExpandedBlockStart.gif)
23
![技術分享圖片](/img/InBlock.gif)
24
![技術分享圖片](/img/InBlock.gif)
25
![技術分享圖片](/img/InBlock.gif)
26
![技術分享圖片](/img/ExpandedSubBlockStart.gif)
27
![技術分享圖片](/img/InBlock.gif)
28
![技術分享圖片](/img/InBlock.gif)
29
![技術分享圖片](/img/ExpandedSubBlockEnd.gif)
30
![技術分享圖片](/img/InBlock.gif)
31
![技術分享圖片](/img/ExpandedBlockEnd.gif)
既然我們可以通過DocumentText生成自己的網頁,那麽能不能象使用IE那樣操作這個網頁呢?,答案是肯定的,完全可以像操作Web程序那樣操作WebBrowser 控制項。比如我們可以加入腳本,CSS。當然,如果你熟悉 HTML 物件對象模型 (DOM),也可以透過 Document 屬性來處理目前的Web網頁內容。下面的例子加入了JavaScript腳本來控制網頁。如果要在Winfrom程序中寫大量的Javascriot代碼,而且這些代碼最終要轉換成String型載入到Webbrowser 那將是很痛苦的事情,不過沒有關系,我們可以創建一個js文件,放入資源中,用的時候只需從資源中載入即可。這裏我創建一個名為 ClientScript.js 的文件。
![技術分享圖片](/img/None.gif)
2
![技術分享圖片](/img/None.gif)
3
![技術分享圖片](/img/ExpandedBlockStart.gif)
4
![技術分享圖片](/img/InBlock.gif)
5
![技術分享圖片](/img/ExpandedBlockEnd.gif)
6
![技術分享圖片](/img/None.gif)
7
![技術分享圖片](/img/None.gif)
8
![技術分享圖片](/img/ExpandedBlockStart.gif)
9
![技術分享圖片](/img/InBlock.gif)
10
![技術分享圖片](/img/ExpandedSubBlockStart.gif)
11
![技術分享圖片](/img/InBlock.gif)
12
![技術分享圖片](/img/InBlock.gif)
13
![技術分享圖片](/img/ExpandedSubBlockEnd.gif)
14
![技術分享圖片](/img/InBlock.gif)
15
![技術分享圖片](/img/InBlock.gif)
16
![技術分享圖片](/img/ExpandedBlockEnd.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
![技術分享圖片](/img/None.gif)
WebBrowser 是 System.Windows.Forms 下的控制項,也就是意味著它是用在WimForm程序下,那麽WebWrower所載入的Web頁面如何實現在WinForm程序下處理呢。例如上例中的 "<font onclick = ‘ClickEvent(Name.value)‘>Click Here</font>" 。這裏的Click事件是通過腳本處理的,如何讓這個Click事件在Winform中處理呢?這裏要做一些修改。若要從指令碼存取用戶端應用程式,需要設定ObjectForScripting 屬性。指令碼可以將您指定的物件當做window.external 物件來存取。
使用ObjectForScripting屬性,可啟用 WebBrowser 控制項所裝載之 Web 網頁與包含 WebBrowser 控制項之應用程式間的通訊。
這個屬性可讓您整合動態超文字標記語言 (DHTML) 程式碼與用戶端應用程式程式碼。
指定給這個屬性的物件可讓 Web 網頁指令碼做為 window.external 物件,這個物件是為了存取主應用程式而提供的內建 DOM 物件。
1
![技術分享圖片](/img/None.gif)
2
![技術分享圖片](/img/ExpandedBlockStart.gif)
3
![技術分享圖片](/img/InBlock.gif)
4
![技術分享圖片](/img/InBlock.gif)
5
![技術分享圖片](/img/InBlock.gif)
6
![技術分享圖片](/img/InBlock.gif)
7
![技術分享圖片](/img/InBlock.gif)
8
![技術分享圖片](/img/InBlock.gif)
9
![技術分享圖片](/img/InBlock.gif)
10
![技術分享圖片](/img/InBlock.gif)
11
![技術分享圖片](/img/InBlock.gif)
12
![技術分享圖片](/img/InBlock.gif)
13
![技術分享圖片](/img/InBlock.gif)
14
![技術分享圖片](/img/InBlock.gif)
15
![技術分享圖片](/img/InBlock.gif)
16
![技術分享圖片](/img/InBlock.gif)
17
![技術分享圖片](/img/InBlock.gif)
18
![技術分享圖片](/img/InBlock.gif)
19
![技術分享圖片](/img/InBlock.gif)
20
![技術分享圖片](/img/InBlock.gif)
21
![技術分享圖片](/img/InBlock.gif)
22
![技術分享圖片](/img/InBlock.gif)
23
![技術分享圖片](/img/InBlock.gif)
24
![技術分享圖片](/img/InBlock.gif)
25
![技術分享圖片](/img/ExpandedBlockEnd.gif)
26
![技術分享圖片](/img/None.gif)
27
![技術分享圖片](/img/ExpandedBlockStart.gif)
28
![技術分享圖片](/img/InBlock.gif)
29
![技術分享圖片](/img/InBlock.gif)
30
![技術分享圖片](/img/InBlock.gif)
31
![技術分享圖片](/img/InBlock.gif)
32
![技術分享圖片](/img/InBlock.gif)
33
![技術分享圖片](/img/InBlock.gif)
34
![技術分享圖片](/img/ExpandedBlockEnd.gif)
這裏的ObjectForScripting 屬性設置為 this。註意:在From1 類的開頭加入了這麽一句[ComVisible(true)], 它在System.Runtime.InteropServices下,預設值為 true,指出 Managed 型別對於 COM 為可見的。
[ComVisible(true)]
public partial class Form1 : System.Windows.Forms.Form
webbrowser 控件實現WinForm與WebForm交互