我将 WebBrowserShortcutsEnabled 设置为 false,以便在我的 System.Windows.Forms.WebBrowser 实现中禁用典型的 Internet Explorer 快捷方式。在我还实现 IOLEClientSite 和 使用以下代码调用 SetClientSite 之前,这一切正常:
IOLEObject o = (IOLEObject)this.ActiveXInstance;
o.SetClientSite(this);
如果我删除此代码,它会起作用并且快捷方式会被正确禁用。这是怎么回事?
请您参考如下方法:
WebBrowser 是一个 ActiveX 控件。它与主机协商处理 UI 实现细节,如快捷键。它需要先将这件事告诉宿主,因为宿主可能希望自己使用该快捷方式。
普通主机由派生自 WebBrowserSiteBase 的内部 WebBrowserSite 类实现。你取代了它,现在你的工作就是实现谈判。这是由 IDocHostUIHandler::TranslateAccelerator() 完成的,只需从此方法的实现中返回 S_OK。这告诉浏览器它不应该自己处理击键。
