【问题标题】:How to raise an event on MS word Keypress如何在 MS word Keypress 上引发事件
【发布时间】:2013-01-02 03:26:01
【问题描述】:

我正在开发一个 MS-Word 插件,其中我的代码必须能够访问用户通过键盘输入的字母。

private void ThisDocument_Startup(object sender, System.EventArgs e)
{
    this.SelectionChange += new SelectionEventHandler(ThisDocument_SelectionChange);
}

void ThisDocument_SelectionChange(object sender, SelectionEventArgs e)
{
    MessageBox.Show(e.Selection.Text);
}

我认为 SelectionChange 事件可以给我文本,但在按键时不会引发事件,有没有办法在按键时触发事件?此外,如果有更直接的方法或提供该功能的开源项目,将受到欢迎。

【问题讨论】:

  • 选择更改是为了在“突出显示文本”时更改状态。 (msdn.microsoft.com/en-us/library/…),寻找类似“KeyUp”、“KeyDown”或“KeyPress”之类的东西,尽管快速搜索没有产生任何结果。
  • @PhilPrice,答案表明没有可以从 Visual Studio 访问的直接“KeyUp”或“KeyDown”事件。我正在使用“SelectionChange”事件作为解决方法。如果我可以触发它,我可以捕获光标处的字符。顺便说一句,它已经可以由箭头键触发。无论如何感谢您的输入

标签: c# ms-word vsto office-interop


【解决方案1】:

Microsoft 本身不会公开按键事件,但有一种解决方法。

我在下面链接的文章的帮助下实现了键盘检查:

http://www.switchonthecode.com/tutorials/winforms-accessing-mouse-and-keyboard-state

这为您提供了一个名为 IsKeyDown 的静态方法,实现和调用您可以订阅的委托应该相当简单。

【讨论】:

  • +1 感谢您的回答。我正在考虑使用这种方法。你实现的代码可靠吗?我的意思是,Office/Word 是否会妨碍它并间歇性地阻止它工作?谢谢。
  • 我不确定,我没有将它用于单词插件:)
  • @Soeholm 您提供的链接现已失效。
  • 这里是死链接的副本:web.archive.org/web/20121102085806/http://…
  • “实现和调用委托”是什么意思。您能否将此添加到您的答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 2014-12-29
相关资源
最近更新 更多