如何在Office自定义任务窗格中的WebBrowser控件中启用键盘事件

本文关键字:WebBrowser 控件 启用 事件 键盘 Office 自定义 任务 | 更新日期: 2023-09-27 17:59:21

我在Visual Studio中创建的Microsoft Office应用程序级外接程序的自定义任务窗格中显示了一个WebBrowser控件。WebBrowser中显示的网页不接收可以由JavaScript代码(如KeyUp)处理的键盘事件。Form中可比较的WebBrowser中显示的同一页面确实接收键盘事件。WebBrowser控件本身似乎没有公开任何与键盘输入相关的事件,而且我似乎无法通过向作为自定义任务窗格添加的UserControl添加事件处理程序来处理键盘事件。

我创建了一个最小的例子——Visual Studio解决方案——它重现了这个问题。

有什么方法可以将键盘事件传递到网页上吗?

如何在Office自定义任务窗格中的WebBrowser控件中启用键盘事件

是的,你可以做到。你必须挂接HTML DOM事件(如onclick、onmouseover等)。看看这里:http://www.w3schools.com/jsref/dom_obj_event.asp.

这里有一个例子:http://www.codeproject.com/Articles/547451/WebBrowser-Element-Events-and-Values

我认为您必须添加对MSHTML库的引用。顺便说一句,把WebBrowser控件放在Panel控件中,否则它会表现得很愚蠢——尤其是在键盘事件中。

实际上,我发现了一个解决方案,即在Excel命名空间下使用WebBrowser

https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.controls.webbrowser.aspx

显然,它是在将窗口从WebBrowser子类化,并通过手动处理一些窗口消息来解决键盘问题。