注意:此类在 .NET Framework 2.0 版中是新增的。
使用户可以在窗体中导航网页。
命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)
使用 WebBrowser 控件可以在 Windows 窗体应用程序中承载网页以及支持浏览器的其他文档。例如,可以使用 WebBrowser 控件在应用程序中提供基于 HTML 的集成用户帮助或 Web 浏览功能。此外,还可以使用 WebBrowser 控件向 Windows 窗体客户端应用程序添加基于 Web 的现有控件。
重要事项: |
---|
WebBrowser 控件会占用大量资源。使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源。必须在附加事件的同一线程上调用 Dispose 方法,该线程应始终是消息或用户界面 (UI) 线程。 |
WebBrowser 控件不能由部分受信任的代码使用。有关更多信息,请参见 通过部分受信任的代码使用库。
WebBrowser 控件具有多个与导航相关的属性、方法和事件。使用下面的成员可以将控件导航到特定 URL、在导航历史记录列表中向后和向前移动,还可以加载当前用户的主页和搜索页:
如果导航不成功,则显示一页指示出现的问题。使用这些成员中的任何一个进行导航都会导致在导航的不同阶段发生 Navigating、Navigated 和 DocumentCompleted 事件。
使用这些成员和其他成员(如 Stop 和 Refresh 方法)可以在应用程序中实现与 Internet Explorer 中的用户界面控件类似的用户界面控件。即使不希望在窗体上显示 WebBrowser 控件,某些成员也十分有用。例如,可以使用 Print 方法打印网页的最新版本,而不向用户显示该页。
使用 WebBrowser 控件还可以显示在应用程序中创建的内容或从数据库或资源文件检索的内容。使用 DocumentText 或 DocumentStream 属性,以字符串或数据流的形式获取或设置当前文档的内容。
还可以通过 Document 属性操作网页的内容,该属性包含一个 HtmlDocument 对象,向当前页提供对 HTML 文档对象模型 (DOM) 的托管访问。该属性与 ObjectForScripting 属性组合使用时,对在应用程序代码与网页中的动态 HTML (DHTML) 代码之间实现双向通信十分有用,使用它可以在单个用户界面中组合基于 Web 的控件和 Windows 窗体控件。在应用程序中可以使用 Document 属性调用脚本代码方法。脚本代码可以通过 window.external 对象访问应用程序,该对象是用于主机访问的内置 DOM 对象,它映射到为 ObjectForScripting 属性指定的对象。
注意 |
---|
该类要求类级别上的安全性。如果派生类或调用堆栈中的任何调用方不具有完全信任权限,则会引发 SecurityException。有关安全要求的详细信息,请参见 链接要求 和 继承要求。 |
注意 |
---|
WebBrowser 类仅能用于设置为单线程单元 (STA) 模式的线程。若要使用此类,请确保使用 STAThreadAttribute 属性标记 Main 方法。 |
Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows CE 平台说明:要实现 .NET Compact Framework 应用程序中的 WebBrowser 的完整功能,需要用于 Pocket PC 和 Smartphone 的 Windows Mobile 5.0 版软件。有关更多信息,请参见 如何:在 .NET Compact Framework 中使用 WebBrowser 控件。
下面的代码示例演示如何使用 WebBrowser 控件实现地址栏。此示例要求窗体包含一个名为 webBrowser1 的 WebBrowser 控件、一个名为 TextBoxAddress 的 TextBox 控件和一个名为 ButtonGo 的 Button 控件。在文本框中键入 URL 并按 Enter 或单击“转到”按钮时,WebBrowser 控件会定位至指定的 URL。通过单击超链接进行定位时,文本框会自动更新以显示当前 URL。
有关完整的代码示例,请参见 如何:将 Web 浏览器功能添加到 Windows 窗体应用程序。
// Navigates to the URL in the address box when // the ENTER key is pressed while the ToolStripTextBox has focus.private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Enter){Navigate(toolStripTextBox1.Text);}}// Navigates to the URL in the address box when // the Go button is clicked.private void goButton_Click(object sender, EventArgs e){Navigate(toolStripTextBox1.Text);}// Navigates to the given URL if it is valid.private void Navigate(String address){if (String.IsNullOrEmpty(address)) return;if (address.Equals("about:blank")) return;if (!address.StartsWith("http://") &&!address.StartsWith("https://")){address = "http://" + address;}try{webBrowser1.Navigate(new Uri(address));}catch (System.UriFormatException){return;}}// Updates the URL in TextBoxAddress upon navigation.private void webBrowser1_Navigated(object sender,WebBrowserNavigatedEventArgs e){toolStripTextBox1.Text = webBrowser1.Url.ToString();}