【发布时间】:2013-03-09 01:51:11
【问题描述】:
我从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
}
我的问题是:
- 是否必须实现其他接口才能使其正常工作?
- 这是设计使然吗,我读过一些post,它与
WebBrowser的.net 框架实现中的一个错误有关
我知道可以采用ICustomDoc.SetUIHandler 的方式,但这不是我想要的。
我曾经有过放弃 c# 并使用非托管代码的想法。是这样吗?
【问题讨论】:
标签: c# .net browser webbrowser-control