在 MSHTML 界面中,HTMLDocumentEvents4 应该包含大约 30 个事件(根据 msdn 页面http://msdn.microsoft.com/en-us/library/ff976251(v=vs.85).aspx#events),但只有 onmssitemodejumplistitemremoved 和 onmsthumbnailclick 可用我想访问其他事件..尤其是更改事件..如何访问其他事件
using System.Runtime.InteropServices;
namespace MSHTML
{
[ComVisible(false)]
[TypeLibType(TypeLibTypeFlags.FHidden)]
public interface HTMLDocumentEvents4_Event
{
event HTMLDocumentEvents4_onmssitemodejumplistitemremovedEventHandler onmssitemodejumplistitemremoved;
event HTMLDocumentEvents4_onmsthumbnailclickEventHandler onmsthumbnailclick;
}
}
在我的代码中,我尝试如下访问,但它不起作用(未分配侦听器)
//Event handler class
public delegate void DHTMLEvent(IHTMLEventObj e);
[ComVisible(true)]
public class DHTMLEventHandler
{
public DHTMLEvent Handler;
HTMLDocument Document;
public DHTMLEventHandler(HTMLDocument doc)
{
this.Document = doc;
}
[DispId(0)]
public void Call()
{
Handler(Document.parentWindow.@event);
}
}
//My code
HTMLDocumentEvents2_Event Events = (HTMLDocumentEvents2_Event)document;
Events.onclick += new HTMLDocumentEvents2_onclickEventHandler(Events_onclick);//working
HTMLDocumentEvents4_Event Events2 = (HTMLDocumentEvents4_Event)document;
// Events2.change ->Not availabe so as a workaround I did the below but that is also not // working
DHTMLEventHandler onchangeHandler = new DHTMLEventHandler(document);
onchangeHandler.Handler += new DHTMLEvent(Events_onchange);
document.attachEvent("onchange", onchangeHandler); //Not working
document.onchange = onchangeHandler; //Not Working
private void Events_onchange(IHTMLEventObj e)
{
//I want to do my operation here but this is not called as listener is not assigned
}
private Boolean Events_onclick(IHTMLEventObj e)
{
//working perfectly
}
所以我想通过自定义方法或使用 HTMLDocumentEvents4 接口的隐藏事件来监听 onchange 事件..帮帮我