我正在使用WebBrowser控件,使用DesignMode函数来编辑HTML。我使用MSHTML接口来查看和修改DOM。
以输入文本框为例-我可以使用连接点附加事件接收器,或添加自定义呈现行为,但当我将此输入框移动到文档的另一部分时,我将丢失连接点挂钩和添加的行为。
是否有任何类型的事件我可以挂钩,在其中我可以连接事件接收器并重新添加行为?
发布于 2012-08-31 12:07:09
当元素被控件删除或创建时,我找不到任何可以挂接的事件,但我找到了一个在做出任何更改(包括控件本身)时将触发的事件:IHTMLChangeSink
该接口有一个"Notify()“方法,每当文档发生更改时都会触发该方法。
将事件挂接到实现此接口的类:
var markupContainer = _document as IMarkupContainer2;
if(markupContainer != null)
{
uint tmpCookie = 0;
markupContainer.RegisterForDirtyRange(this, out tmpCookie);
_changeSinkCookie = tmpCookie;
}
我保留了文档中的元素列表,然后在此事件触发时进行比较,以告知是否添加或删除了任何元素。
https://stackoverflow.com/questions/11348011
复制相似问题