Utilisation des documents IHTMLDocuments 1, 2, 3 & amp; 4
-
22-07-2019 - |
Question
J'utilise un navigateur Web dans mon projet actuel et je l'utilise actuellement en mode conception pour le rendre modifiable, etc. Le code que j'utilise actuellement est le suivant:
WebBrowser.Document.DomDocument as IHTMLDocument2
Qu'est-ce qu'un IHTMLDocument2, 3 ou 4? J'ai également constaté que lors de l'identification d'une plage de sélection actuelle dans le document, la méthode range.text.replace ne fonctionnait pas de la même manière qu'un string.replace.
Quelqu'un peut-il m'expliquer les fonctionnalités de base des documents IHTMLDocuments et IHTMLTxtRange, s'il vous plaît?
La solution
IHTMLDocument est une interface qui est essentiellement une "incassable". contrat qui représente ce que l'objet qui l'implémentera fournira.
La modification de l'interface lors du passage à une nouvelle version du code romprait le contrat en cours, ainsi que le code reposant sur ce contrat.
Supposons que vous créez:
public interface IMyInterface {
public int Property1 { get; set; }
}
Un an plus tard, vous devez ajouter Property2 mais vous ne pouvez pas modifier votre interface. Donc, une solution consiste à créer:
public interface IMyInterface2 {
public int Property2 { get;set; }
}
puis avec votre ancienne classe qui implémente IMyInterface:
public class MyObject : IMyInterface, IMyInterface2 {
public int Property1 { get {} set {} }
public int Property2 { get {} set {} }
}
Ensuite, vous ne rompez pas l'ancien contrat, mais vous pouvez utiliser la nouvelle interface dans un code tel que:
if (obj is IMyInterface) {
Console.WriteLine(((IMyInterface)obj).Property1);
if (obj is IMyInterface2) {
//more
}
}
C’est donc ce que Microsoft a fait. La bibliothèque mshtml dans laquelle se trouve IHTMLDocument est une bibliothèque COM, qui s'appuie fortement sur les interfaces. Au fur et à mesure de l'évolution de la bibliothèque, Microsoft a ajouté de plus en plus d'interfaces pour exposer les nouvelles fonctionnalités / codes.
IHTMLTxtRange est une interface pour le TextRange plus couramment utilisé. objet. Il expose de nombreuses fonctionnalités pour analyser le texte " Fragments " ou "gammes".