WebBrowser
我已经从具有自己实现的控件创建了派生控件,该控件IDocHostUIHandler
遵循方法的想法CreateWebBrowserSiteBase
:
WebBrowser.WebBrowserSite 类提供 OLE IDocHostUIHandler 接口的默认实现。您可以提供自己的此接口实现或实现任何其他 WebBrowser ActiveX 控件接口,以自定义控件的行为。
不工作的问题。我的代码如下所示:
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public MyBrowser(){}
protected override WebBrowserSiteBase CreateWebBrowserSiteBase()
{
var manager = new NewWebBrowserSite(this);
return manager;
}
protected class NewWebBrowserSite : WebBrowserSite,
UnsafeNativeMethods.IDocHostUIHandler
{
private MyBrowser host;
public NewWebBrowserSite(MyBrowser h)
: base(h)
{
this.host = h;
}
int UnsafeNativeMethods.IDocHostUIHandler.ShowContextMenu(int dwID, NativeMethods.POINT pt, object pcmdtReserved, object pdispReserved)
{
MyBrowser wb = (MyBrowser)this.host;
// other code
}
// rest of IDocHostUIHandler methods
}
我的问题是:
- 我是否必须实现其他接口才能使其正常工作?
- 是设计使然吗,我读过一些帖子,它与 .net 框架实现中的错误有关
WebBrowser
我知道这是可能的ICustomDoc.SetUIHandler
,但这不是我想要的。
我曾经有过放弃 c# 并使用非托管代码的想法。是这样吗?