2008-10-06 9 views
6

Ich habe versucht, WndProc zu überschreiben, aber keine Nachricht beim Einfügen Ereignis.Wie fangen Sie Control-V in C# App?

Dann habe ich versucht, benutzerdefinierte Filter und mit der Methode erstellen PreFilterMessage I Nachricht fangen konnte mit dem Wert 257 (KEYUP Ereignis), aber das ist nicht genug ...

Antwort

17

Verwendung:

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

Fabrikat sicher dein Formular KeyPreview = true.

+5

FYI - Das ist nicht ich frage die Frage – Goran

+0

was ist mit der rechten Maustaste -> einfügen? – Haoest

+0

Zuerst müssten Sie diese Funktion implementieren (mit Kontext-Menü-Streifen, denke ich). Du hättest sowieso die volle Kontrolle darüber – Goran

2

Sie können dies tun, indem sie:

  • Intercepting die Strg + V in KeyDown (oder KeyUp) des Formulars
  • ein Menü in dem Formular erstellen, die eine Option Einfügen enthält, die Strg + V hat Abkürzung (das wäre vielleicht besser, da Sie Benutzer nach den Optionen suchen)
  • Abfangen der KEYDOWN-Nachricht wie Sie in der Frage beschrieben und prüfen, ob zu diesem Zeitpunkt die Strg gedrückt wird (ich denke, das ist das härteste von allen 3) .

Persönlich würde ich für die Verwendung einer Menüoption gehen.