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


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 тегов. DIV FORM Теги BODYи SPAN теги представлены отдельными HtmlElement объектами.

Существует несколько способов доступа к элементам в этом дереве. Body Используйте свойство для доступа к тегу BODY и всем его дочерним элементам. Свойство ActiveElement предоставляет HtmlElement элемент на HTML-странице с фокусом ввода пользователя. Все элементы на HTML-странице могут иметь имя; All Коллекция предоставляет доступ к каждому HtmlElement из них с его именем в качестве индекса. GetElementsByTagName возвращает HtmlElementCollection все HtmlElement объекты с заданным именем HTML-тега, например DIV или TABLE. GetElementById возвращает один соответствующий HtmlElement уникальному идентификатору, который вы предоставляете. GetElementFromPoint возвращает HtmlElement значение, которое можно найти на экране в указанных координатах указателя мыши.

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

HtmlDocumentоснован на неуправляемых интерфейсах, реализованных DHTML DOM Internet Explorer: IHTMLDocument, , IHTMLDocument2IHTMLDocument3и 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)

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

Equals(Object)

Проверяет объект на равенство по текущему объекту.

ExecCommand(String, Boolean, Object)

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

Focus()

Задает фокус ввода пользователей на текущий документ.

GetElementById(String)

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

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

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

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

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