2008-10-06 13 views
6

He intentado anular WndProc, pero no aparece ningún mensaje en el evento pegar.¿Cómo atrapar Control-V en la aplicación C#?

Luego trató de crear filtros personalizados y utilizando el método de PreFilterMessage yo era capaz de ponerse al mensaje con el valor 257 (evento keyUp), pero eso no es suficiente ...

Respuesta

17

Uso:

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

Hacer Asegúrese de que su formulario KeyPreview = verdadero.

+5

FYI - Eso no me hace la pregunta – Goran

+0

¿Qué tal el clic derecho -> pegar? – Haoest

+0

Primero necesitaría implementar dicha característica (usando la tira de menú contextual, supongo). Tendría un control total sobre él de todos modos – Goran

2

Usted puede hacer esto por:

  • La interceptación de las teclas Ctrl + V en KeyDown (o KeyUp) de su formulario
  • Creación de un menú en el formulario que contiene una opción Pegar que tiene el Ctrl + V acceso directo (esto quizás sea mejor ya que los usuarios buscarán las opciones)
  • Interceptando el mensaje KEYDOWN como describió en la pregunta y comprobando si Ctrl está presionado en ese momento (creo que este es el más difícil de los 3) .

Personalmente, me gustaría utilizar una opción de menú.

Cuestiones relacionadas