.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);