Поделиться через


HtmlDocument Класс

Определение

Обеспечивает программный доступ верхнего уровня к HTML-документу, который размещается в элементе управления WebBrowser.

public ref class HtmlDocument sealed
public sealed class HtmlDocument
type HtmlDocument = class
Public NotInheritable Class HtmlDocument
Наследование
HtmlDocument

Примеры

В следующем примере кода используются данные из базы данных Northwind для динамического HTML TABLE создания с помощью CreateElement. Метод AppendChild также используется для добавления ячеек (TD элементов) в строки (TR элементы), затем для добавления строк в таблицу и, наконец, для добавления таблицы в конец текущего документа. В примере кода требуется, чтобы в приложении был WebBrowser элемент управления с именем 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). Экземпляр HtmlDocument получается с помощью Document свойства WebBrowser элемента управления .

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 предоставляет HtmlElement для элемента на HTML-странице с фокусом ввода пользователем. Все элементы html-страницы могут иметь имя; All Коллекция предоставляет доступ к каждому из них HtmlElement , используя его имя в качестве индекса. GetElementsByTagName возвращает из HtmlElementCollection всех HtmlElement объектов с заданным именем html-тега, например DIV или TABLE. GetElementById возвращает объект , HtmlElement соответствующий уникальному идентификатору, который вы указали. GetElementFromPoint возвращает объект , HtmlElement который можно найти на экране по указанным координатам указателя мыши.

Вы также можете использовать коллекцию Forms и Images для перебора элементов, представляющих формы ввода пользователем и графику соответственно.

HtmlDocument основан на неуправляемых интерфейсах, реализованных моделью DOM DHTML Internet Explorer: IHTMLDocument, IHTMLDocument2, IHTMLDocument3и IHTMLDocument4. Только наиболее часто используемые свойства и методы в этих неуправляемых интерфейсах предоставляются 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

Возвращает или задает файлы cookie HTTP, связанные с данным документом.

DefaultEncoding

Получает кодировку, используемую по умолчанию для текущего документа.

Domain

Возвращает или задает строку, описывающую домен этого документа в целях безопасности.

DomDocument

Получает указатель на неуправляемый интерфейс для данного объекта HtmlDocument.

Encoding

Возвращает или задает кодировку для этого документа.

Focused

Получает значение, показывающее, имеет ли документ фокус ввода пользователя.

ForeColor

Возвращает или задает цвет текста для документа.

Forms

Возвращает коллекцию всех <FORM> элементов в документе.

Images

Получает коллекцию всех тегов изображений в документе.

LinkColor

Возвращает или задает цвет гиперссылок.

Links

Возвращает список всех гиперссылок в этом HTML-документе.

RightToLeft

Возвращает или задает направление текста в текущем документе.

Title

Возвращает или задает текстовое значение тега <TITLE> в текущем HTML-документе.

Url

Получает URL-адрес, указывающий расположение этого документа.

VisitedLinkColor

Получает или задает цвет ссылок на HTML-страницы, которые пользователь уже посетил.

Window

Получает объект HtmlWindow, связанный с данным документом.

Методы

AttachEventHandler(String, EventHandler)

Добавляет обработчик событий для именованного события HTML DOM.

CreateElement(String)

Создает новый объект HtmlElement указанного типа HTML-тега.

DetachEventHandler(String, EventHandler)

Удаляет обработчик событий из именованного события модели DOM HTML.

Equals(Object)

Тестирует объект на равенство с текущим объектом.

ExecCommand(String, Boolean, Object)

Выполняет заданную команду в отношении документа.

Focus()

Помещает фокус ввода на текущий документ.

GetElementById(String)

Извлекает один объект HtmlElement , используя атрибут элемента ID в качестве ключа поиска.

GetElementFromPoint(Point)

Возвращает HTML-элемент, расположенный по указанным клиентским координатам.

GetElementsByTagName(String)

Возвращает коллекцию элементов с указанным HTML-тегом.

GetHashCode()

Возвращает хэш-код для данного объекта.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
InvokeScript(String)

Выполняет функцию Active Scripting, определенную на HTML-странице.

InvokeScript(String, Object[])

Выполняет функцию Active Scripting, определенную на 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

Происходит при приостановке перехода на другую веб-страницу.

Применяется к

См. также раздел