WebBrowser

WebBrowser

編程程序
WebBrowser 控件可以在應用程序中承載網頁以及支持浏覽器的其他文檔。例如,可以使用 WebBrowser 控件在應用程序中提供基于 HTML 的集成用戶幫助或 Web 浏覽功能。     WebBrowser控件可以讓你的用戶浏覽一個特定的網頁。但它不是一個完整的浏覽器,因為它沒有地址欄,收藏夾 ,選項卡等等。你可以把它當做HTML中的iframe,但它提供了更豐富的界面。你可以通過兩個手指收縮(和雙擊)來進行縮放,平移和滾動是自動内置的,你無須自己實現。  這個控件另一個很棒的特性是它可以加載本地和網絡中的内容。這意味着如果我有很多HTML文件(也許是文檔),那麼我不需要為我的應用程序去重新創建這些内容。相反,我可以将這些HTML頁面嵌入到我的應用程序中,并在本地(電話中)加載他們而不是依靠一個可能會出現問題的數據連接。[1]
    中文名: 外文名:WebBrowser 别名: 命名空間::System.Windows.Forms 程序集::System.Windows 屬性:計算機

.net控件

簡介

WebBrowser是一個.NET控件類,在.NETFramework2.0版中新增。WebBrowser類使用戶可以在窗體中導航網頁。

命名空間:System.Windows.Forms

程序集:System.Windows.Forms(在system.windows.forms.dll中)

語法

VisualBasic(聲明)

__PublicClassWebBrowserInheritsWebBrowserBase

VisualBasic(用法)

DiminstanceAsWebBrowser

C#

[ComVisibleAttribute(true)][ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]publicclassWebBrowser:WebBrowserBase

C++

[ComVisibleAttribute(true)][ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]publicrefclassWebBrowser:publicWebBrowserBase

J#

/**@attributeComVisibleAttribute(true)*//**@attributeClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)*/publicclassWebBrowserextendsWebBrowserBase

JScript

ComVisibleAttribute(true)ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)publicclassWebBrowserextendsWebBrowserBase

備注

使用WebBrowser控件可以在Windows窗體應用程序中承載網頁以及支持浏覽器的其他文檔。例如,可以使用WebBrowser控件在應用程序中提供基于HTML的集成用戶幫助或Web浏覽功能。此外,還可以使用WebBrowser控件向Windows窗體客戶端應用程序添加基于Web的現有控件。

重要事項

WebBrowser控件會占用大量資源。使用完該控件後一定要調用Dispose方法,以便确保及時釋放所有資源。必須在附加事件的同一線程上調用Dispose方法,該線程應始終是消息或用戶界面(UI)線程。

WebBrowser控件不能由部分受信任的代碼使用。

WebBrowser控件具有多個與導航相關的屬性、方法和事件。使用下面的成員可以将控件導航到特定URL、在導航曆史記錄列表中向後和向前移動,還可以加載當前用戶的主頁和搜索頁:

Url

Navigate

goback

GoForward

GoHome

GoSearch

如果導航不成功,則顯示一頁指示出現的問題。使用這些成員中的任何一個進行導航都會導緻在導航的不同階段發生Navigating、Navigated和DocumentCompleted事件。

使用這些成員和其他成員(如Stop和Refresh方法)可以在應用程序中實現與InternetExplorer中的用戶界面控件類似的用戶界面控件。即使不希望在窗體上顯示WebBrowser控件,某些成員也十分有用。例如,可以使用Print方法打印網頁的最新版本,而不向用戶顯示該頁。

使用WebBrowser控件還可以顯示在應用程序中創建的内容或從數據庫或資源文件檢索的内容。使用DocumentText或DocumentStream屬性,以字符串或數據流的形式獲取或設置當前文檔的内容。

還可以通過Document屬性操作網頁的内容,該屬性包含一個HtmlDocument對象,向當前頁提供對HTML文檔對象模型(DOM)的托管訪問。該屬性與ObjectForScripting屬性組合使用時,對在應用程序代碼與網頁中的動态HTML(DHTML)代碼之間實現雙向通信十分有用,使用它可以在單個用戶界面中組合基于Web的控件和Windows窗體控件。在應用程序中可以使用Document屬性調用腳本代碼方法。腳本代碼可以通過window.external對象訪問應用程序,該對象是用于主機訪問的内置DOM對象,它映射到為ObjectForScripting屬性指定的對象。

注意

該類要求類級别上的安全性。如果派生類或調用堆棧中的任何調用方不具有完全信任權限,則會引發SecurityException。有關安全要求的詳細信息,請參見鍊接要求和繼承要求。

注意

WebBrowser類僅能用于設置為單線程單元(STA)模式的線程。若要使用此類,請确保使用STAThreadAttribute屬性标記Main方法。

WindowsMobileforPocketPC,WindowsMobileforSmartphone,WindowsCE平台說明:要實現.NETCompactFramework應用程序中的WebBrowser的完整功能,需要用于PocketPC和Smartphone的WindowsMobile5.0版軟件。有關更多信息,請參見如何:在.NETCompactFramework中使用WebBrowser控件。

示例

下面的代碼示例演示如何使用WebBrowser控件實現地址欄。此示例要求窗體包含一個名為webBrowser1的WebBrowser控件、一個名為TextBoxAddress的TextBox控件和一個名為ButtonGo的Button控件。在文本框中鍵入URL并按Enter或單擊“轉到”按鈕時,WebBrowser控件會定位至指定的URL。通過單擊超鍊接進行定位時,文本框會自動更新以顯示當前URL。

VisualBasic

'NavigatestotheURLintheaddressboxwhen

'theENTERkeyispressedwhiletheToolStripTextBoxhasfocus.

PrivateSubtoolStripTextBox1_KeyDown(_

ByValsenderAsObject,ByValeAsKeyEventArgs)_

HandlestoolStripTextBox1.KeyDown

If(e.KeyCode=Keys.Enter)Then

Navigate(toolStripTextBox1.Text)

EndIf

EndSub

'NavigatestotheURLintheaddressboxwhen

'theGobuttonisclicked.

PrivateSubgoButton_Click(_

ByValsenderAsObject,ByValeAsEventArgs)_

HandlesgoButton.Click

Navigate(toolStripTextBox1.Text)

EndSub

'NavigatestothegivenURLifitisvalid.

PrivateSubNavigate(ByValaddressAsString)

IfString.IsNullOrEmpty(address)ThenReturn

Ifaddress.Equals("about:blank")ThenReturn

IfNotaddress.StartsWith("http://")And_

Notaddress.StartsWith("https://")Then

address="http://"&address

EndIf

Try

webBrowser1.Navigate(NewUri(address))

CatchexAsSystem.UriFormatException

Return

EndTry

EndSub

'UpdatestheURLinTextBoxAddressuponnavigation.

PrivateSubwebBrowser1_Navigated(ByValsenderAsObject,_

ByValeAsWebBrowserNavigatedEventArgs)_

HandleswebBrowser1.Navigated

toolStripTextBox1.Text=webBrowser1.Url.ToString()

EndSub

C#

//NavigatestotheURLintheaddressboxwhen

//theENTERkeyispressedwhiletheToolStripTextBoxhasfocus.

privatevoidtoolStripTextBox1_KeyDown(objectsender,KeyEventArgse)

{

if(e.KeyCode==Keys.Enter)

{

webBrowser1.Navigate(toolStripTextBox1.Text);

}

}

//NavigatestotheURLintheaddressboxwhen

//theGobuttonisclicked.

privatevoidgoButton_Click(objectsender,EventArgse)

{

webBrowser1.Navigate(toolStripTextBox1.Text);

}

//NavigatestothegivenURLifitisvalid.

privatevoidNavigate(Stringaddress)

{

if(String.IsNullOrEmpty(address))return;

if(address.Equals("about:blank"))return;

if(!address.StartsWith("http://")&&

!address.StartsWith("https://"))

{

address="http://"+address;

}

try

{

webBrowser1.Navigate(newUri(address));

}

catch(System.UriFormatException)

{

return;

}

}

//UpdatestheURLinTextBoxAddressuponnavigation.

privatevoidwebBrowser1_Navigated(objectsender,

WebBrowserNavigatedEventArgse)

{

toolStripTextBox1.Text=webBrowser1.Url.ToString();

}

C++

//NavigatestotheURLintheaddresstextboxwhen

//theENTERkeyispressedwhilethetextboxhasfocus.

voidTextBoxAddress_KeyDown(Object^/*sender*/,System::Windows::Forms::KeyEventArgs^e)

{

if(e->KeyCode==System::Windows::Forms::Keys::Enter&&!this->TextBoxAddress->Text->Equals(""))

{

this->WebBrowser1->Navigate(this->TextBoxAddress->Text);

}

}

//NavigatestotheURLintheaddresstextboxwhen

//theGobuttonisclicked.

voidButtonGo_Click(System::Object^/*sender*/,System::EventArgs^/*e*/)

{

if(!this->TextBoxAddress->Text->Equals(""))

{

this->WebBrowser1->Navigate(this->TextBoxAddress->Text);

}

}

//UpdatestheURLinTextBoxAddressuponnavigation.

voidWebBrowser1_Navigated(Object^/*sender*/,System::Windows::Forms::WebBrowserNavigatedEventArgs^/*e*/)

{

this->TextBoxAddress->Text=this->WebBrowser1->Url->ToString();

}

繼承層次結構

System.Object

System.MarshalByRefObject

System.ComponentModel.Component

System.Windows.Forms.Control

System.Windows.Forms.WebBrowserBase

System.Windows.Forms.WebBrowser

線程安全

此類型的任何公共靜态(VisualBasic中的Shared)成員都是線程安全的,但不保證所有實例成員都是線程安全的。

平台

Windows98、Windows2000SP4、WindowsCE、WindowsMillenniumEdition、WindowsMobileforPocketPC、WindowsMobileforSmartphone、WindowsServer2003、WindowsXPMediaCenterEdition、WindowsXPProfessionalx64Edition、WindowsXPSP2、WindowsXPStarterEdition

.NETFramework并不是對每個平台的所有版本都提供支持。有關受支持版本的列表,請參見系統要求。

版本信息

.NETFramework

受以下版本支持:2.0

.NETCompactFramework

受以下版本支持:2.0

請參見

參考

WebBrowser成員

System.Windows.Forms命名空間

其他資源

WebBrowser控件(Windows窗體)

通過部分受信任的代碼使用庫

IE浏覽器控件

WebBrowser是IE内置的浏覽器控件,無需用戶下載。本文檔所讨論的是有關IE6.0版本的WebBrowser控件技術内容。其他版本的IE應該也支持。與其相關的技術要求有:打印文檔的生成、頁面設置、打印操作的實現等幾個環節。

一、WebBrowser控件

二、WebBrowder控件的方法

//打印

WebBrowser1.ExecWB(6,1);

//打印設置

WebBrowser1.ExecWB(8,1);

//打印預覽

WebBrowser1.ExecWB(7,1);

相關詞條

相關搜索

其它詞條