Вам нужно подождать, пока событие веб-браузера DocumentCompleted
не сработает, чтобы DomDocument.Body
не было нулевым. Я только что проверил это, чтобы проверить. Я предполагаю, что вопрос все еще остается: как вы можете редактировать через базовый интерфейс COM, когда документ еще не полностью загружен?
Я проверил, совпадают ли указатели IHTMLDocument2
в DocumentCompleted и в конструкторе. Это так, что может указывать на то, что базовый COM-объект повторно использует один объект документа HTML. Кажется, что любые изменения, которые вы вносите в конструктор, имеют, по крайней мере, довольно хороший шанс переписать или вызвать исключение.
Например, если я делаю это в конструкторе, я получаю ошибку:
IHTMLDocument2 p1 = (IHTMLDocument2) HTMLEditor.Document.DomDocument;
p1.title = "Hello world!";
Если я делаю то же самое в обработчике DocumentCompleted, он работает нормально.
Надеюсь, это поможет. Спасибо.