1

HTML を編集するための DesignMode 関数を使用して、WebBrowser コントロールを操作しています。DOM を確認および変更するために、MSHTML インターフェイスを使用しています。

入力テキスト ボックスを例にとると、コネクション ポイントを使用してイベント シンクをアタッチしたり、カスタム レンダリング動作を追加したりできますが、この入力ボックスをドキュメントの別の部分に移動すると、コネクション ポイント フックと追加された動作。

イベント シンクを接続して動作を再追加できる、フックできるイベントの種類はありますか?

4

1 に答える 1

0

コントロールによって要素が削除または作成されたときにフックするイベントが見つかりませんでした。(コントロール自体によるものを含む) 変更が行われたときに発生するイベントを見つけました: IHTMLChangeSink

このインターフェイスには、ドキュメントが変更されるたびに起動するメソッド「Notify()」が 1 つあります。

このインターフェイスを実装するクラスにイベントをフックします。

        var markupContainer = _document as IMarkupContainer2;
        if(markupContainer != null)
        {
            uint tmpCookie = 0;
            markupContainer.RegisterForDirtyRange(this, out tmpCookie);
            _changeSinkCookie = tmpCookie;
        }

ドキュメント内にある要素のリストを保持し、このイベントが発生したときに diff を実行して、要素が追加または削除されたかどうかを確認します。

于 2012-08-31T12:07:09.137 に答える