HtmlDocument 类 使用

HtmlDocument 类 使用HtmlDocument类 注意:此类在.NETFramework2.0版中是新增的。提供对WebBrowser控件承载的HTML文档的顶级编程访问。命名空间:System.Windows.Forms程序集:System.Windows.Forms(在system.windows.forms.dll中)varExpCollDivS

大家好,又见面了,我是你们的朋友全栈君。

HtmlDocument 类 

注意:此类在 .NET Framework 2.0 版中是新增的。

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

命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl04f0129ed,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl04img,”; </script>
语法

Visual Basic(声明)

Public NotInheritable Class HtmlDocument

Visual Basic(用法)

Dim instance As HtmlDocument

C#

public sealed class HtmlDocument

C++

public ref class HtmlDocument sealed

J#

public final class HtmlDocument

JScript

public final class HtmlDocument

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl112f8c7f9,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl11img,”; </script>
备注

HtmlDocument 为 Internet Explorer 的文档对象提供托管包装,该文档对象也称为 HTML 文档对象模型 (DOM)。您可以通过 WebBrowser 控件的 Document 属性获取 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 将返回具有给定 HTML 标记名称(如 DIVTABLE)的所有 HtmlElement 对象的 HtmlElementCollectionGetElementById 将返回对应于所提供的唯一 ID 的单个 HtmlElementGetElementFromPoint 将返回可以在屏幕上所提供的鼠标指针坐标位置找到的 HtmlElement

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

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

HTML 文档可以包含框架,框架是 WebBrowser 控件内部的不同窗口。每个框架均显示它自己的 HTML 页。Frames 集合在没有 Window 属性的情况下也可以使用。您也可以使用 Window 属性来调整显示页的大小、滚动文档或向用户显示警报和提示。

HtmlDocument 公开在承载 HTML 页时期望处理的最常见事件。对于接口没有直接公开的事件,可以使用 AttachEventHandler 为该事件添加一个处理程序。

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

Note注意

虽然 HtmlDocument 中的大部分属性、方法和事件的名称都与非托管 DOM 上的对应项的名称相同,但为了与 .NET Framework 保持一致,某些名称已发生了改变。

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl3018e8f01,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl30img,”; </script>
示例

下面的代码示例通过 CreateElement,使用 Northwind 数据库中的数据动态创建一个 HTML TABLE。此外,还使用 AppendChild 方法,首先向行(TR 元素)中添加单元格(TD 元素),然后向表中添加行,最后将表追加到当前文档的末尾。该代码示例要求应用程序具有一个称为 WebBrowser1WebBrowser 控件。

Visual Basic

Private Sub DisplayCustomersTable()
    ' Initialize the database connection.
    Dim CustomerData As New DataSet()
    Dim CustomerTable As DataTable

    Try
        Dim DBConn As New SqlConnection("Data Source=CLIENTUE;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

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

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl3544ba711,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl35img,”; </script>
继承层次结构

System.Object

  
System.Windows.Forms.HtmlDocument

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl3751b57cc,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl37img,”; </script>
线程安全

此类型的任何公共静态(Visual Basic 中的
Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl38649aeb3,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl38img,”; </script>
平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl4006129f6,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl40img,”; </script>
版本信息

.NET Framework

受以下版本支持:2.0

<script type=”text/Javascript”> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + “ctl00_LibFrame_ctl4146a5d7d,”; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + “ctl00_LibFrame_ctl41img,”; </script>
请参见

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161631.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 特立独行的理解_特立独行的感觉

    特立独行的理解_特立独行的感觉原题链接对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数

    2022年8月9日
    4
  • Python人工智能之图片识别,Python3一行代码实现图片文字识别[通俗易懂]

    Python人工智能之图片识别,Python3一行代码实现图片文字识别[通俗易懂]自学Python3第5天,今天突发奇想,想用Python识别图片里的文字。没想到Python实现图片文字识别这么简单,只需要一行代码就能搞定#作者微信:2501902696fromPILimportImageimportpytesseract#上面都是导包,只需要下面这一行就能实现图片文字识别text=pytesseract.image_to_string(Image.open(‘d

    2022年4月28日
    61
  • jquery checkbox 选中方法「建议收藏」

    jquery checkbox 选中方法「建议收藏」方法一:if($(“#checkbox-id”)get(0).checked){//dosomething}方法二:最佳if($(‘#checkbox-id’).is(‘:checked’)){//dosomething}方法三:if($(‘#checkbox-id’).attr(‘checked’)){//dos

    2022年7月15日
    18
  • python连接数据库插入数据「建议收藏」

    python连接数据库插入数据「建议收藏」python连接数据库插入数据在数据库创建表并插入测试数据dropdatabaseifexistshrs;createdatabasehrsdefaultcharsetutf8mb4;usehrs;createtabletb_dept(dnointnotnullcomment’编号’,dnamevarchar(10)notnullcomment’名称’,dlocvarchar(20)notnullcomment’所在地’,prim

    2025年7月12日
    2
  • maven mvn 命令行 编译打包

    maven mvn 命令行 编译打包*一行命令#切换到项目根目录mvnclean&&mvncompile&&mvnpackage&&starttarget*配置好jdkmaven教程*下载安装mavenhttp://maven.apache.org/download.cgiapache-maven-3.3.3-bin….

    2022年6月7日
    33
  • pycharm企业版激活码[在线序列号]

    pycharm企业版激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号