HtmlDocument 类

定义

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

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

示例

下面的代码示例使用 Northwind 数据库中的数据使用 动态CreateElement创建 HTML TABLEAppendChild还使用 方法,首先将单元格 (TD 元素) 添加到行 (TR 元素) ,然后将行添加到表中,最后将表追加到当前文档的末尾。 代码示例要求应用程序具有名为 WebBrowserWebBrowser1控件。 应在加载文档后调用代码。

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) )提供托管包装。 通过 Document 控件的 属性获取 的WebBrowser实例HtmlDocument

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 整个文档。 BODYDIVFORMSPAN 标记由单个HtmlElement对象表示。

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

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

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

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

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

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

注意

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

属性

ActiveElement

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

ActiveLinkColor

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

All

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

BackColor

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

Body

HtmlElement获取 标记的 BODY

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, Object[])

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

InvokeScript(String)

执行在 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

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

适用于

另请参阅