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

时间:2015-06-24 14:45:10

标签: c# winforms ms-office vsto keyboard-events

我在Visual Studio中创建的Microsoft Office应用程序级外接程序的自定义任务窗格中显示了WebBrowser控件。 WebBrowser中显示的网页未收到可由JavaScript代码处理的键盘事件,例如KeyUpWebBrowser 中可比较的Form中显示的同一页面会收到键盘事件。 WebBrowser控件本身似乎没有暴露任何与键盘输入相关的事件,我似乎无法通过向作为自定义任务添加的UserControl添加事件处理程序来处理键盘事件窗格中。

我创建了a minimal example – a Visual Studio solution – which recreates the problem

有没有办法将键盘事件传递到网页?

2 个答案:

答案 0 :(得分:0)

是的,你可以做到。您将不得不挂钩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控件中,否则它会表现得很傻 - 尤其是键盘事件。

答案 1 :(得分:0)

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

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

显然,它正在通过手动处理一些Windows消息来对Windows WebBrowser进行子类化并修复键盘问题。