6

I've tried to override WndProc, but no message show up on paste event.

Then I tried to create custom filter and using method PreFilterMessage I was able to catch message with value 257 (KEYUP event), but that's not enough...

4

2 回答 2

18

Use:

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

Make sure your form KeyPreview = true.

于 2008-10-06T08:50:33.187 回答
2

您可以通过以下方式做到这一点:

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

我个人会选择使用菜单选项。

于 2008-10-06T09:18:48.510 回答