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>
请参见

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Dubbo负载均衡策略之最小活跃策略

    Dubbo负载均衡策略之最小活跃策略今天我来学习一下Dubbo负载均衡之一的最小活跃策略-LeastActiveLoadBalance首先,让我们对负载均衡做一个简单的介绍。所谓集负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。负载均衡、集群容错、服务降级这三个概念在微服务中非常重要。从调用顺序来看,一次完整的RPC调用首先是负载均衡、其次是集群容错、最后是服务降级:负载均衡解决了选哪一个的问题、集群容错解决了换哪一个的问题、而服务降级则是解决了全错了怎么办的问题今天我们要学习的策略是最小活跃策略-Le

  • 精通Python爬虫框架Scrapy_php爬虫框架哪个好用

    精通Python爬虫框架Scrapy_php爬虫框架哪个好用文章目录一、Scrapy框架原理1、Scrapy特点2、Scrapy安装3、Scrapy架构图4、Scrapy五大组件5、Scrapy工作流程二、Scrapy创建项目三、Scrapy配置文件详解1、项目完成步骤2.3.2爬虫文件:baidu.py详解3、settings.py详解4、run.py文件详解5、items.py详解四、案例1、抓取一页数据1.1创建项目和爬虫文件1.2items.py文件1.3写爬虫:guazi.py1.4管道:pipelines.py文件1.5全局配置:setti

    2022年10月21日
  • 黑马程序员——JAVA学习笔记四(继承、接口、内部类)

    黑马程序员——JAVA学习笔记四(继承、接口、内部类)

  • 基于android的_android studio创建activity

    基于android的_android studio创建activityAndroid如何判断一个应用在运行 在一个应用中,或一个Service、Receiver中判断一个应用是否正在运行,以便进行一些相关的处理。这个时候我们需要得到一个ActivityManager,这个Manager顾名思意就是管理Activity的,它有一个方法叫getRunningTasks,可以得到当前系统正在运行的Task的列表,代码如下:  A

  • Gazebo使用笔记(5) —— 力/力矩传感器的使用[通俗易懂]

    Gazebo使用笔记(5) —— 力/力矩传感器的使用[通俗易懂]1.插件的添加在相应的<joint>标签内添加如下代码:<sensorname=”force_torque”type=”force_torque”><update_rate>30</update_rate></sensor>运行world:gazebo–verboseforce_torque_tutorial.world查看传感器输出:法1:命令查看gztopi

  • Razor语法_range语法

    Razor语法_range语法本章通过示例来说明常见用途下的Razor语法。1.Razor中的核心转换符号是@。这个单一字符用做标记-代码的转换字符,有时也反过来用作代码-标记的转换字符。这里共有两种基本类型的转换:代码表达式和代码块。求出表达式的值,然后将值写入到响应中。@{stringrootNamespace="MyApp";}&lt;span&gt;@rootNamespace.Models&…

    2022年10月25日

发表回复

您的电子邮箱地址不会被公开。

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