سؤال

وأنا باستخدام متصفح ويب في مشروعي الحالي وحاليا أنا استخدامه في وضع التصميم لجعلها قابلة للتحرير الخ الرمز الذي أستخدمه حاليا هو:

WebBrowser.Document.DomDocument as IHTMLDocument2

ما هو في الواقع IHTMLDocument2، 3 أو 4؟ لقد وجدت أيضا أن عند تحديد مجموعة مختارة الحالي في الوثيقة، وطريقة range.text.replace لا يعمل بنفس الطريقة التي string.replace يفعل.

وأي شخص يمكن أن يفسر لي الوظائف الأساسية للIHTMLDocuments وIHTMLTxtRange من فضلك؟

هل كانت مفيدة؟

المحلول

وIHTMLDocument هو واجهة التي هي أساسا "غير قابلة للكسر" العقد الذي يمثل ما الكائن الذي ينفذ أنها ستوفر.

وتغيير واجهة عند الانتقال إلى نسخة جديدة من قانون من شأنه كسر هذا العقد وبالتالي كسر التعليمات البرمجية التي تعتمد على هذا العقد.

وافترض إنشاء:

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

وبعد ذلك بعام تحتاج إلى إضافة Property2 لكن لا يمكنك تغيير واجهة الخاص بك. حتى طريقة واحدة حول ذلك هو خلق:

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

وبعد ذلك مع الفئة القديمة التي تنفذ IMyInterface:

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

وبعد ذلك سوف لا فسخ العقد كبار السن ولكن يمكن استخدام واجهة جديدة في التعليمات البرمجية مثل:

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

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

وهكذا هذا هو ما فعلته مايكروسوفت. المكتبة MSHTML أن IHTMLDocument في هي مكتبة COM وCOM تعتمد بشدة على واجهات. وذلك تطورت المكتبة أضافت مايكروسوفت أكثر وأكثر واجهات لفضح أحدث وظائف / القانون.

وIHTMLTxtRange هو واجهة لأكثر شيوعا TextRange الكائن . وإنما يعرض مجموعة من الوظائف للتحليل النص "شظايا" أو "نطاقات".

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top