Condividi tramite


HtmlDocument Classe

Definizione

Fornisce l'accesso a livello di codice al primo livello della struttura di un documento HTML contenuto nel controllo WebBrowser.

public ref class HtmlDocument sealed
public sealed class HtmlDocument
type HtmlDocument = class
Public NotInheritable Class HtmlDocument
Ereditarietà
HtmlDocument

Esempio

Nell'esempio di codice seguente vengono usati i dati del database Northwind per creare un oggetto HTML TABLE in modo dinamico usando CreateElement. Viene usato anche il AppendChild metodo , innanzitutto per aggiungere celle (TD elementi) a righe (TR elementi ), quindi per aggiungere righe alla tabella e infine per aggiungere la tabella alla fine del documento corrente. L'esempio di codice richiede che l'applicazione disponga di un WebBrowser controllo denominato WebBrowser1. Il codice deve essere chiamato dopo il caricamento di un documento.

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

Commenti

HtmlDocument fornisce un wrapper gestito sull'oggetto documento di Internet Explorer, noto anche come DOM (Document Object Model) HTML. Si ottiene un'istanza di HtmlDocument tramite la Document proprietà del WebBrowser controllo .

I tag HTML all'interno di un documento HTML possono essere annidati tra loro. HtmlDocument rappresenta quindi un albero del documento, i cui figli sono istanze della HtmlElement classe . Nell'esempio di codice seguente viene illustrato un semplice file 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>  

In questo esempio rappresenta HtmlDocument l'intero documento all'interno dei HTML tag. I BODYtag , FORMDIVe SPAN sono rappresentati da singoli HtmlElement oggetti.

Esistono diversi modi per accedere agli elementi in questa struttura ad albero. Utilizzare la Body proprietà per accedere al BODY tag e a tutti i relativi elementi figlio. La ActiveElement proprietà fornisce l'oggetto HtmlElement per l'elemento in una pagina HTML con stato attivo l'input dell'utente. Tutti gli elementi all'interno di una pagina HTML possono avere un nome; la raccolta fornisce l'accesso All a ogni HtmlElement oggetto usando il relativo nome come indice. GetElementsByTagName restituirà un HtmlElementCollection oggetto di tutti gli HtmlElement oggetti con un determinato nome di tag HTML, ad esempio DIV o TABLE. GetElementById restituirà il singolo HtmlElement corrispondente all'ID univoco fornito. GetElementFromPoint restituirà l'oggetto HtmlElement che può essere trovato sullo schermo in corrispondenza delle coordinate del puntatore del mouse fornite.

È anche possibile usare la Forms raccolta e Images per scorrere gli elementi che rappresentano rispettivamente i moduli di input utente e la grafica.

HtmlDocument si basa sulle interfacce non gestite implementate dal DOM DHTML di Internet Explorer: IHTMLDocument, IHTMLDocument2, IHTMLDocument3e IHTMLDocument4. Solo le proprietà e i metodi usati più di frequente in queste interfacce non gestite vengono esposti da HtmlDocument. È possibile accedere a tutte le altre proprietà e metodi direttamente usando la DomDocument proprietà , che è possibile eseguire il cast al puntatore di interfaccia non gestito desiderato.

Un documento HTML può contenere frame, che sono finestre diverse all'interno del WebBrowser controllo. Ogni frame visualizza la propria pagina HTML. La Frames raccolta è disponibile tramite la Window proprietà . È anche possibile utilizzare la Window proprietà per ridimensionare la pagina visualizzata, scorrere il documento o visualizzare avvisi e richieste all'utente.

HtmlDocument espone gli eventi più comuni che si prevede di gestire durante l'hosting di pagine HTML. Per gli eventi non esposti direttamente dall'interfaccia, è possibile aggiungere un gestore per l'evento usando AttachEventHandler.

I file HTML possono contenere SCRIPT tag che incapsulano il codice scritto in uno dei linguaggi di scripting attivo, ad esempio JScript o VBScript. Il InvokeScript metodo fornisce l'esecuzione di proprietà e metodi definiti in un SCRIPT tag.

Nota

Anche se la maggior parte delle proprietà, dei metodi e degli eventi in HtmlDocument ha mantenuto gli stessi nomi del DOM non gestito, alcuni sono stati modificati per coerenza con .NET Framework.

Proprietà

ActiveElement

Fornisce l'oggetto HtmlElement che ha attualmente lo stato attivo per l'input dell'utente.

ActiveLinkColor

Ottiene o imposta l'oggetto Color di un collegamento ipertestuale quando un utente vi fa clic.

All

Ottiene un'istanza di HtmlElementCollection, in cui sono memorizzati tutti gli oggetti HtmlElement per il documento.

BackColor

Ottiene o imposta il colore di sfondo del documento HTML.

Body

Ottiene l'oggetto HtmlElement per il BODY tag.

Cookie

Ottiene o imposta i cookie HTTP associati al documento corrente.

DefaultEncoding

Ottiene la codifica usata per impostazione predefinita nel documento corrente.

Domain

Ottiene o imposta la stringa che descrive il dominio del documento corrente, a scopo di sicurezza.

DomDocument

Ottiene il puntatore a interfaccia non gestita per HtmlDocument.

Encoding

Ottiene o imposta la codifica dei caratteri per il documento corrente.

Focused

Ottiene un valore che indica se il documento dispone dello stato attivo per l'input dell'utente.

ForeColor

Ottiene o imposta il colore del testo del documento.

Forms

Ottiene una raccolta di tutti gli <FORM> elementi del documento.

Images

Ottiene una raccolta di tutti i tag di immagine nel documento.

LinkColor

Ottiene o imposta il colore dei collegamenti ipertestuali.

Links

Ottiene un elenco di tutti i collegamenti ipertestuali nel documento HTML corrente.

RightToLeft

Ottiene o imposta la direzione del testo nel documento corrente.

Title

Ottiene o imposta il valore di testo del <TITLE> tag nel documento HTML corrente.

Url

Ottiene l'URL che descrive la posizione del documento corrente.

VisitedLinkColor

Ottiene o imposta il colore dei collegamenti alle pagine HTML che l'utente ha già visitato.

Window

Ottiene l'oggetto HtmlWindow associato al documento corrente.

Metodi

AttachEventHandler(String, EventHandler)

Aggiunge un gestore eventi per l'evento HTML DOM specificato.

CreateElement(String)

Crea un nuovo elemento HtmlElement del tipo di tag HTML specificato.

DetachEventHandler(String, EventHandler)

Rimuove un gestore eventi da un evento specifico in HTML DOM.

Equals(Object)

Verifica l'uguaglianza dell'oggetto relativamente a quello corrente.

ExecCommand(String, Boolean, Object)

Esegue il comando specificato sul documento.

Focus()

Imposta lo stato attivo per l'input dell'utente sul documento corrente.

GetElementById(String)

Recupera un singolo HtmlElement oggetto usando l'attributo dell'elemento ID come chiave di ricerca.

GetElementFromPoint(Point)

Recupera l'elemento HTML nella posizione indicata dalle coordinate client specificate.

GetElementsByTagName(String)

Recupera una raccolta di elementi con il tag HTML specificato.

GetHashCode()

Recupera il codice hash per questo oggetto.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InvokeScript(String, Object[])

Esegue una funzione di scripting definita in una pagina HTML.

InvokeScript(String)

Esegue una funzione di scripting definita in una pagina HTML.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OpenNew(Boolean)

Ottiene un nuovo oggetto HtmlDocument da usare con il metodo Write(String).

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
Write(String)

Scrive una nuova pagina HTML.

Operatori

Equality(HtmlDocument, HtmlDocument)

Restituisce un valore che indica se le istanze di HtmlDocument specificate rappresentano lo stesso valore.

Inequality(HtmlDocument, HtmlDocument)

Restituisce un valore che indica se le istanze di HtmlDocument specificate non rappresentano lo stesso valore.

Eventi

Click

Si verifica quando l'utente fa clic in un qualsiasi punto del documento.

ContextMenuShowing

Si verifica quando l'utente richiede la visualizzazione del menu contestuale del documento.

Focusing

Si verifica prima che lo stato attivo venga assegnato al documento.

LosingFocus

Si verifica quando un controllo sta perdendo lo stato attivo.

MouseDown

Si verifica quando l'utente fa clic con il pulsante sinistro del mouse.

MouseLeave

Si verifica quando il mouse non è più posizionato sul documento.

MouseMove

Si verifica quando il puntatore del mouse viene spostato sul documento.

MouseOver

Si verifica quando il puntatore del mouse viene spostato sul documento.

MouseUp

Si verifica quando l'utente rilascia il pulsante sinistro del mouse.

Stop

Si verifica quando la navigazione in un'altra pagina Web viene interrotta.

Si applica a

Vedi anche