1

我正在使用 WebBrowser 控件,使用 DesignMode 函数来编辑 HTML。我正在使用 MSHTML 接口来查看和修改 DOM。

以输入文本框为例 - 我可以使用连接点附加事件接收器,或添加自定义呈现行为,但是当我将此输入框移动到文档的另一部分时,我会丢失连接点挂钩和添加的行为。

有没有我可以连接的事件,我可以连接事件接收器并重新添加行为?

4

1 回答 1

0

当控件删除或创建元素时,我找不到任何要挂钩的事件,我确实找到了一个在进行任何更改(包括控件本身)时将触发的事件:IHTMLChangeSink

这个接口有一个方法“Notify()”,当文档改变时触发。

将事件连接到实现此接口的类:

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

我保留文档中的元素列表,然后在触发此事件时进行比较,以判断是否添加或删除了任何元素。

于 2012-08-31T12:07:09.137 回答