HtmlDocument 类

定义

提供对 WebBrowser 控件承载的 HTML 文档的顶级编程访问。

public ref class HtmlDocument sealed
public sealed class HtmlDocument
type HtmlDocument = class
Public NotInheritable Class HtmlDocument
继承
HtmlDocument

示例

下面的代码示例使用 Northwind 数据库中的数据来动态使用 HTML TABLE CreateElementAppendChild该方法还用于将单元格 (TD元素) 添加到行 (TR元素) ,然后将行添加到表中,最后将表追加到当前文档的末尾。 The code example requires that your application has a WebBrowser control named WebBrowser1. 应在加载文档后调用代码。

private void DisplayCustomersTable()
{
    DataSet customersSet = new DataSet();
    DataTable customersTable = null;
    SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Customers", "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
    sda.Fill(customersTable);
    customersTable = customersSet.Tables[0];

    if (webBrowser1.Document != null)
    {
        HtmlElement tableRow = null;
        HtmlElement headerElem = null;

        HtmlDocument doc = webBrowser1.Document;
        HtmlElement tableElem = doc.CreateElement("TABLE");
        doc.Body.AppendChild(tableElem);

        HtmlElement tableHeader = doc.CreateElement("THEAD");
        tableElem.AppendChild(tableHeader);
        tableRow = doc.CreateElement("TR");
        tableHeader.AppendChild(tableRow);

        foreach (DataColumn col in customersTable.Columns)
        {
            headerElem = doc.CreateElement("TH");
            headerElem.InnerText = col.ColumnName;
            tableRow.AppendChild(headerElem);
        }

        // Create table rows.
        HtmlElement tableBody = doc.CreateElement("TBODY");
        tableElem.AppendChild(tableBody);
        foreach (DataRow dr in customersTable.Rows)
        {
            tableRow = doc.CreateElement("TR");
            tableBody.AppendChild(tableRow);
            foreach (DataColumn col in customersTable.Columns)
            {
                Object dbCell = dr[col];
                HtmlElement tableCell = doc.CreateElement("TD");
                if (!(dbCell is DBNull))
                {
                    tableCell.InnerText = dbCell.ToString();
                }
                tableRow.AppendChild(tableCell);
            }
        }
    }
}
Private Sub DisplayCustomersTable()
    ' Initialize the database connection.
    Dim CustomerData As New DataSet()
    Dim CustomerTable As DataTable

    Try
        Dim DBConn As New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")
        Dim DBQuery As New SqlDataAdapter("SELECT * FROM CUSTOMERS", DBConn)
        DBQuery.Fill(CustomerData)
    Catch dbEX As DataException

    End Try

    CustomerTable = CustomerData.Tables("Customers")

    If (Not (WebBrowser1.Document Is Nothing)) Then
        With WebBrowser1.Document
            Dim TableElem As HtmlElement = .CreateElement("TABLE")
            .Body.AppendChild(TableElem)

            Dim TableRow As HtmlElement

            ' Create the table header. 
            Dim TableHeader As HtmlElement = .CreateElement("THEAD")
            TableElem.AppendChild(TableHeader)
            TableRow = .CreateElement("TR")
            TableHeader.AppendChild(TableRow)

            Dim HeaderElem As HtmlElement
            For Each Col As DataColumn In CustomerTable.Columns
                HeaderElem = .CreateElement("TH")
                HeaderElem.InnerText = Col.ColumnName
                TableRow.AppendChild(HeaderElem)
            Next

            ' Create table rows.
            Dim TableBody As HtmlElement = .CreateElement("TBODY")
            TableElem.AppendChild(TableBody)
            For Each Row As DataRow In CustomerTable.Rows
                TableRow = .CreateElement("TR")
                TableBody.AppendChild(TableRow)
                For Each Col As DataColumn In CustomerTable.Columns
                    Dim Item As Object = Row(Col)
                    Dim TableCell As HtmlElement = .CreateElement("TD")
                    If Not (TypeOf (Item) Is DBNull) Then
                        TableCell.InnerText = CStr(Item)
                    End If
                    TableRow.AppendChild(TableCell)
                Next
            Next

        End With
    End If
End Sub

注解

HtmlDocument 提供 Internet Explorer 文档对象的托管包装器,也称为 HTML 文档对象模型 (DOM) 。 通过控件的属性获取实例HtmlDocumentDocumentWebBrowser

HTML 文档中的 HTML 标记可以相互嵌套。 HtmlDocument 因此,表示文档树,其子级是类的 HtmlElement 实例。 下面的代码示例演示了一个简单的 HTML 文件。

<HTML>  
    <BODY>  
        <DIV name="Span1">Simple HTML Form</DIV>  
        <FORM>  
            <SPAN name="TextLabel">Enter Your Name:</SPAN>  
            <INPUT type="text" size="20" name="Text1">  
        </FORM>  
    </BODY>  
</HTML>  

在此示例中, HtmlDocument 表示标记内的 HTML 整个文档。 标记BODY``DIV``FORMSPAN标记由单个HtmlElement对象表示。

可通过多种方式访问此树中的元素。 Body使用属性访问BODY标记及其所有子级。 该 ActiveElement 属性为具有用户输入焦点的 HTML 页面上的元素提供 HtmlElement 该元素。 HTML 页中的所有元素都可以具有名称;集合 All 提供对每个 HtmlElement 使用其名称作为索引的访问。 GetElementsByTagName 将返回 HtmlElementCollection 具有给定 HTML 标记名称的所有 HtmlElement 对象,例如 DIVTABLEGetElementById 将返回与提供的唯一 ID 对应的单个 HtmlElement ID。 GetElementFromPoint 将返回 HtmlElement 可在提供的鼠标指针坐标处在屏幕上找到的项。

还可以使用 FormsImages 集合循环访问分别表示用户输入表单和图形的元素。

HtmlDocument基于 Internet Explorer 的 DHTML DOM 实现的非托管接口:IHTMLDocumentIHTMLDocument2、和IHTMLDocument3``IHTMLDocument4。 仅公开这些非托管接口 HtmlDocument上最常用的属性和方法。 可以使用属性直接 DomDocument 访问所有其他属性和方法,该属性可以强制转换为所需的非托管接口指针。

HTML 文档可能包含框架,这些框架是控件内部 WebBrowser 的不同窗口。 每个框架显示其自己的 HTML 页面。 该 Frames 集合通过 Window 属性提供。 还可以使用 Window 该属性调整所显示页面的大小、滚动文档或向用户显示警报和提示。

HtmlDocument 公开托管 HTML 页面时要处理的最常见事件。 对于接口未直接公开的事件,可以使用 为事件 AttachEventHandler添加处理程序。

HTML 文件可能包含SCRIPT封装以活动脚本语言之一编写的代码的标记,例如JScript或 VBScript。 该方法 InvokeScript 用于执行标记中 SCRIPT 定义的属性和方法。

备注

虽然大多数属性、方法和事件都与非托管 DOM 上的名称相同,但一些属性、方法和事件HtmlDocument已更改,以便与.NET Framework保持一致。

属性

ActiveElement

提供当前具有用户输入焦点的 HtmlElement

ActiveLinkColor

获取或设置超链接被用户单击后的 Color

All

获取 HtmlElementCollection 的实例,该实例存储文档的所有 HtmlElement 对象。

BackColor

获取或设置 HTML 文档的背景色。

Body

获取 BODY 标记的 HtmlElement

Cookie

获取或设置与此文档关联的 HTTP Cookie。

DefaultEncoding

获取默认情况下为当前文档使用的编码。

Domain

获取或设置字符串,描述用于安全目的的此文档的域。

DomDocument

获取此 HtmlDocument 的非托管接口指针。

Encoding

获取或设置此文档的字符编码。

Focused

获取一个值,该值指示文档是否具有用户输入焦点。

ForeColor

获取或设置文档的文本颜色。

Forms

获取文档中所有 <FORM> 元素的集合。

Images

获取文档中所有图像标记的集合。

LinkColor

获取或设置超链接的颜色。

Links

获取此 HTML 文档中所有超链接的列表。

RightToLeft

获取或设置当前文档中文本的方向。

Title

获取或设置当前 HTML 文档中 TITLE> 标记的文本值<

Url

获取描述此文档位置的 URL。

VisitedLinkColor

获取或设置用户已经访问的链接(指向 HTML 页)的颜色。

Window

获取与此文档关联的 HtmlWindow

方法

AttachEventHandler(String, EventHandler)

为已命名的 HTML DOM 事件添加事件处理程序。

CreateElement(String)

新建一个指定 HTML 标记类型的 HtmlElement

DetachEventHandler(String, EventHandler)

从 HTML DOM 上的命名事件中移除事件处理程序。

Equals(Object)

测试对象是否与当前对象相等。

ExecCommand(String, Boolean, Object)

对文档执行指定的命令。

Focus()

在当前文档上设置用户输入焦点。

GetElementById(String)

将元素的 ID 特性用作搜索键来检索单个 HtmlElement

GetElementFromPoint(Point)

检索位于指定工作区坐标位置的 HTML 元素。

GetElementsByTagName(String)

检索具有指定 HTML 标记的元素集合。

GetHashCode()

检索此对象的哈希代码。

GetType()

获取当前实例的 Type

(继承自 Object)
InvokeScript(String)

执行在 HTML 页面中定义的活动脚本函数。

InvokeScript(String, Object[])

执行在 HTML 页面中定义的活动脚本函数。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OpenNew(Boolean)

获取一个新的 HtmlDocument,以便与 Write(String) 方法一起使用。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
Write(String)

编写一个新的 HTML 页。

运算符

Equality(HtmlDocument, HtmlDocument)

返回一个值,该值指示指定的 HtmlDocument 实例是否表示同一个值。

Inequality(HtmlDocument, HtmlDocument)

返回一个值,该值指示指定的 HtmlDocument 实例是否不表示同一个值。

事件

Click

当用户单击文档上的任何位置时发生。

ContextMenuShowing

当用户请求显示文档的上下文菜单时发生。

Focusing

在将焦点提供给文档之前发生。

LosingFocus

在焦点离开控件时发生。

MouseDown

当用户单击鼠标左键时发生。

MouseLeave

当鼠标不再悬停于文档上时发生。

MouseMove

当鼠标移到文档上时发生。

MouseOver

当鼠标移到文档上时发生。

MouseUp

当用户释放鼠标左键时发生。

Stop

当向其他网页的导航被中断时发生。

适用于

另请参阅