在.net中使用ie WebBrowser控件时,需要跟据自已的需求来定制组件的事件,风格等。其实在.net里控制ie组件的操作很简单,并且可以使用MSHTML提供的所有功能。您可以截获用户的所有操作事件,可以取得用户操作的对像以及对像的属性。下面是我的保留代码,以备后用。
#region WebBrowser所需的事件触发定义
///
/// Generic HTML DOM Event method handler.
public delegate void DHTMLEvent(IHTMLEventObj e);
/// Generic Event handler for HTML DOM objects.
/// Handles a basic event object which receives an IHTMLEventObj which
/// applies to all document events raised.
public class DHTMLEventHandler
{
public DHTMLEvent Handler;
HTMLDocument Document;
public DHTMLEventHandler(HTMLDocument doc)
{
this.Document=doc;
}
[DispId(0)]
public void Call()
Handler(Document.parentWindow.@event);
}
#endregion
private void axWebBrowserADS_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
HTMLDocument doc = this.axWebBrowserADS.Document as HTMLDocument ;
//绑定事件
DHTMLEventHandler onclickHandler = new DHTMLEventHandler( doc );
onclickHandler.Handler += new DHTMLEvent(this.myads_onclick);
doc.onclick = onclickHandler;
DHTMLEventHandler contextMenuHandler = new DHTMLEventHandler( doc );
contextMenuHandler.Handler += new DHTMLEvent(this.myads_oncontextmenu);
doc.oncontextmenu = contextMenuHandler;
DHTMLEventHandler onkeydownHandler = new DHTMLEventHandler( doc );
onkeydownHandler.Handler += new DHTMLEvent(this.myads_onkeydown);
doc.onkeydown = onkeydownHandler;
doc.body.style.border="none";
doc.body.style.overflow="hidden";
private void myads_oncontextmenu(IHTMLEventObj pEvtObj)
pEvtObj.returnValue=false;
private void myads_onclick(IHTMLEventObj pEvtObj)
string a=pEvtObj.srcElement.GetType().ToString();
if(a=="mshtml.HTMLAnchorElementClass")
{
mshtml.HTMLAnchorElementClass link=(mshtml.HTMLAnchorElementClass)pEvtObj.srcElement;
if(link.href.Substring(0,5).ToUpper()=="JOIN:")
{
clsVariable.FM_SERVICESLIST.doJOINcmd(link.href.Substring(5));
pEvtObj.returnValue=false;
}
else if(link.id.Substring(0,1)=="#")
clsVariable.FM_SERVICESLIST.doJOINcmd(link.id);
else
link.target="_blank";
}
else if(a=="mshtml.HTMLImgClass")
mshtml.HTMLImgClass img=(mshtml.HTMLImgClass)pEvtObj.srcElement;
if(img.id!=null && img.id.Substring(0,1)=="#")
clsVariable.FM_SERVICESLIST.doJOINcmd(img.id);
mshtml.HTMLAnchorElementClass link=(mshtml.HTMLAnchorElementClass)pEvtObj.srcElement;
if(link!=null)
link.target="_blank";
else if(a=="mshtml.HTMLAreaElementClass")
mshtml.HTMLAreaElementClass area=(mshtml.HTMLAreaElementClass)pEvtObj.srcElement;
if(area.href.Substring(0,5).ToUpper()=="JOIN:")
clsVariable.FM_SERVICESLIST.doJOINcmd(area.href.Substring(5));
else if(area.id!=null && area.id.Substring(0,1)=="#")
clsVariable.FM_SERVICESLIST.doJOINcmd(area.id);
area.target="_blank";
private void myads_onkeydown(IHTMLEventObj pEvtObj)
if(pEvtObj.keyCode==8) //backspace
pEvtObj.keyCode=0;
pEvtObj.returnValue=false;
else if(pEvtObj.keyCode==116) //KEY F5
else if(pEvtObj.ctrlKey && pEvtObj.keyCode==70) //Key ctrl+F
else if(pEvtObj.ctrlKey && pEvtObj.keyCode==78) //Key ctrl+N
else if(pEvtObj.ctrlKey && pEvtObj.keyCode==80) //Key ctrl+P
本文转自 OldHawk 博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/04/30/733242.html,如需转载请自行联系原作者