я создал производное управление от WebBrowser
управления, который имеет собственной IDocHostUIHandler
реализации следующую идею от CreateWebBrowserSiteBase
метода:Почему моя реализация IDocHostUIHandler игнорируется
Класса 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, что это связано с ошибкой в .NET Framework реализации
WebBrowser
Я знаю, что можно пойти ICustomDoc.SetUIHandler
путь, но это не то, что я находясь в поиске.
У меня возникла идея в какой-то момент отказаться от C# и сделать это с неуправляемым кодом. Это так?
хороший момент, http://msdn.microsoft.com/en-us/library/aa664593(v=vs.71).aspx – walter