2012-07-05 21 views
1

我正在使用WebBrowser控件,使用DesignMode函數編輯HTML。我正在使用MSHTML接口來查看和修改DOM。例如輸入文本框 - 我可以使用連接點附加事件接收器,或添加自定義呈現行爲,但是當我將此輸入框移動到文檔的另一部分時,我將丟失連接點掛鉤和添加的行爲。MSHTML:有沒有辦法在拖放或粘貼後將事件或行爲附加到元素上?

有沒有哪種事件可以連接到我可以連接事件接收器並重新添加行爲的事件?

+0

您是否在尋找像http://stackoverflow.com/questions/1090754/c-sharp-web-browser-with-click-and-highlight功能? – volody 2012-07-05 18:02:20

+0

@ volody-不一定,問題出在用戶交互移動元素時,應用於原始元素的任何事件或裝飾都不會保留在新元素中。 – efess 2012-07-05 19:24:03

+0

嘗試使用IHTMLEditDesigner接口,但相關事件(drop/paste)似乎並未在此處調用。在此期間添加了一個入侵工具,以使其正常運行。 – efess 2012-07-06 17:22:22

回答

0

我找不到任何事件掛鉤上的元素時,通過控制刪除或創建的,我確實發現,將火的時候,作出任何改變的事件(包括由該控件本身):IHTMLChangeSink

此接口有一個方法「Notify()」,只要文檔發生變化就會觸發該方法。

連接事件的類實現此接口:

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

我一直是在文檔中元素的列表,然後DIFF當這個事件觸發說,如果添加或刪除任何元素。

相關問題