如何在C#app中捕获Control-V?

时间:2008-10-06 08:42:10

标签: c# message keyevent

我试图覆盖WndProc,但粘贴事件上没有显示任何消息。

然后我尝试创建自定义过滤器并使用方法PreFilterMessage我能够捕获值为257(KEYUP事件)的消息,但这还不够......

2 个答案:

答案 0 :(得分:18)

使用:

 protected override void OnKeyDown(KeyEventArgs e)
 {
      if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
      {
            MessageBox.Show("Hello world");
      }
      base.OnKeyDown(e);
  }

确保您的表单KeyPreview = true。

答案 1 :(得分:2)

您可以通过以下方式执行此操作:

  • 拦截表单的KeyDown(或KeyUp)中的Ctrl + V
  • 在表单中创建一个菜单,其中包含具有Ctrl + V快捷键的粘贴选项(这可能会更好,因为您将有用户查找选项)
  • 截取问题中描述的KEYDOWN消息,并检查当时是否按下了Ctrl(我认为这是所有3中最难的)。

就个人而言,我会选择使用菜单选项。