2013-09-04 16 views
6

ich versuche, F5, dass auf System.Windows.Forms zu fangen für schrieb ich:Fang KeyUp Ereignis auf WinForm C#

partial class MainForm 
{ 
    (...) 
    this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyUp); 
    (...) 
} 

public partial class MainForm : Form 
{ 
    (...) 

    private void MainForm_KeyUp(object sender, KeyEventArgs e) 
    { 
     Log("MainForm_KeyUp"); 
     if (e.KeyCode == Keys.F5) 
     { 
      RefreshStuff(); 
     } 
    } 
} 

Aber mein Fall sieht nicht arbeiten zu kontrollieren.

Wissen Sie, wie EventKey auf System.Windows.Forms kakteen?

+0

Sie können es zuerst versuchen, die Prüfung von so etwas wie dies zu tun .... throw new Exception (e.KeyCode.ToString()); .... Vielleicht gibt Ihnen das einen Hinweis darauf, was Sie mit dem Schlüsselcode verwenden sollten. Stellen Sie außerdem e.Handled = true sicher; – ismellike

+0

Platziere einen Haltepunkt in der ersten Zeile von 'MainForm_KeyUp' und stelle sicher, dass er tatsächlich getroffen wird. Was ist 'this.KeyUp + = ...' in? Der Ctor? Eine Methode? Wurde diese Methode tatsächlich ausgeführt? Vielleicht haben Sie das Ereignis 'KeyUp' nicht abonniert ... –

+0

@ismellike und Grant Winney, das Hinzufügen einer Ausnahme oder eines Haltepunkts tut nicht mehr. Selbst ich habe nichts aus meiner Logbox bekommen. Das bestätigt Ereignis wird überhaupt nicht erwischt. – mickro

Antwort

9

die keypreview property des Formulars auf true

eingestellt werden, wenn diese Eigenschaft auf true gesetzt ist, wird das Formular alle KeyPress erhalten, KeyDown und KeyUp Ereignisse. Nachdem die Ereignishandler des Formulars die Verarbeitung des Tastendrucks abgeschlossen haben, wird der Tastendruck dann dem Steuerelement mit Fokus zugewiesen.

+1

+1 Wow, ich habe eine Weile mit 'WinForms' gearbeitet und habe das nie gewusst. Etwas Neues gelernt ... –

Verwandte Themen