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

相关词条

相关搜索

其它词条