メソッドからのアイデアに従って、WebBrowser
独自の実装を持つコントロールから派生コントロールを作成しました。IDocHostUIHandler
CreateWebBrowserSiteBase
WebBrowser.WebBrowserSiteクラスは、OLEIDocHostUIHandlerインターフェースのデフォルトの実装を提供します。コントロールの動作をカスタマイズするために、このインターフェイスの独自の実装を提供するか、他のWebBrowserActiveXコントロールインターフェイスを実装できます。
動作していない問題。私のコードは次のように見えます:
[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#をあきらめて、アンマネージコードでそれを行うことを考えていました。そうですか?