2009-05-08 21 views
3

Ich bin einen Web-Browser in meinem aktuellen Projekt verwenden und zur Zeit verwende ich es im Entwurfsmodus es editierbar zu machen usw. Der Code, den ich zur Zeit benutze ist:Mit IHTMLDocuments 1, 2, 3 & 4

WebBrowser.Document.DomDocument as IHTMLDocument2 

Was ist eigentlich ein IHTMLDocument2, 3 oder 4? Ich habe auch festgestellt, dass die Methode range.text.replace beim Identifizieren eines aktuellen Auswahlbereichs im Dokument nicht so funktioniert, wie dies bei string.replace der Fall ist.

Kann mir bitte jemand die grundlegenden Funktionen der IHTMLDocuments und der IHTMLTxtRange erklären?

Antwort

2

IHTMLDocument ist eine Schnittstelle, die im Wesentlichen ein "unzerbrechlicher" Vertrag ist, der darstellt, was das Objekt, das es implementiert, bereitstellt.

Das Ändern der Schnittstelle beim Wechsel zu einer neuen Version des Codes würde diesen Vertrag brechen und wiederum den Code zerstören, der auf diesem Vertrag beruht.

Angenommen, Sie erstellen:

public interface IMyInterface { 
     public int Property1 { get; set; } 
} 

Ein Jahr später müssen Sie Property2 hinzufügen, aber Sie können nicht Ihre Schnittstelle ändern. So ein Weg, um das schaffen:

public interface IMyInterface2 { 
    public int Property2 { get;set; } 
} 

und dann mit Ihrer alten Klasse, die IMyInterface implementiert:

public class MyObject : IMyInterface, IMyInterface2 { 
    public int Property1 { get {} set {} } 
    public int Property2 { get {} set {} } 
} 

Dann werden Sie nicht den älteren Vertrag brechen, aber die neue Schnittstelle in Code verwenden kann wie zum Beispiel:

if (obj is IMyInterface) { 
    Console.WriteLine(((IMyInterface)obj).Property1); 

    if (obj is IMyInterface2) { 
     //more 
    } 
} 

Also das ist, was Microsoft getan hat. Die Mshtml-Bibliothek, in der sich IHTMLDocument befindet, ist eine COM-Bibliothek, und COM ist stark auf Schnittstellen angewiesen. Als die Bibliothek weiterentwickelt wurde, fügte Microsoft immer mehr Schnittstellen hinzu, um die neuere Funktionalität/den neuen Code verfügbar zu machen.

IHTMLTxtRange ist eine Schnittstelle für das häufiger verwendete Objekt TextRange. Es bietet eine Reihe von Funktionen zum Parsen von Text "Fragmente" oder "Bereiche".

http://www.webreference.com/js/column12/trmethods.html

Verwandte Themen