我正在使用 WebBrowser 控件,使用 DesignMode 函数来编辑 HTML。我正在使用 MSHTML 接口来查看和修改 DOM。
以输入文本框为例 - 我可以使用连接点附加事件接收器,或添加自定义呈现行为,但是当我将此输入框移动到文档的另一部分时,我会丢失连接点挂钩和添加的行为。
有没有我可以连接的事件,我可以连接事件接收器并重新添加行为?
我正在使用 WebBrowser 控件,使用 DesignMode 函数来编辑 HTML。我正在使用 MSHTML 接口来查看和修改 DOM。
以输入文本框为例 - 我可以使用连接点附加事件接收器,或添加自定义呈现行为,但是当我将此输入框移动到文档的另一部分时,我会丢失连接点挂钩和添加的行为。
有没有我可以连接的事件,我可以连接事件接收器并重新添加行为?
当控件删除或创建元素时,我找不到任何要挂钩的事件,我确实找到了一个在进行任何更改(包括控件本身)时将触发的事件:IHTMLChangeSink
这个接口有一个方法“Notify()”,当文档改变时触发。
将事件连接到实现此接口的类:
var markupContainer = _document as IMarkupContainer2;
if(markupContainer != null)
{
uint tmpCookie = 0;
markupContainer.RegisterForDirtyRange(this, out tmpCookie);
_changeSinkCookie = tmpCookie;
}
我保留文档中的元素列表,然后在触发此事件时进行比较,以判断是否添加或删除了任何元素。