KeyEvent für ESC?

Hi,

im folgenden Code wird das KeyDown Ereignis für ein Formular "Form1" gesetzt:

Code:
// Ereignis registrieren (sollte innerhalb der Initialisierung Sequenz stehen)
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);

// Funktion die ausgeführt wird, wenn eine Taste gedrückt wird
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
	if( e.KeyCode == Keys.Escape )
	{
		MessageBox.Show("User hit escape key");
	}
}

Denke mal das hilft dir weiter!
 
ok, ich dachte du willst nur eine allgemeine Lösung dafür.
Das KeyDown Ereignis hängt natürlich auch davon ab, welches Steuerelement den Focus besitzt.
Wenn du dich z.B. während der Laufzeit innerhalb einer TextBox befindest, wird
das KeyDown Ereignis des Formulares natürlich nicht ausgelöst.

Dazu müsstes du dann z.b. das KeyDown Ereignis der TextBox implementieren.
Das ist aber nicht tragisch, da du die zu verarbeitende Funktion "Form1_KeyDown"
beibehalten kannst und nur das Ereignis der TextBox implementieren musst.

z.B.:
Code:
textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
Alles klar ?
 
Ahhhhh... so was sollte man wiessen...

und wenn ich das generell für die komplette Anwendung möchte?
zB.: das ESC alle Felder neu lädt um Änderungen zu verwerfen?
 
Nichts einfacher als das.
Nach der Initialisierung aller Steuerelemente machst du folgendes:
Code:
foreach(Control c in this.Controls)
{
	c.KeyDown += new KeyEventHandler(Form1_KeyDown);
}
Es kann natürlich sein dass es eine andere (noch einfachere) Lösung
gibt um die Tasten abzufangen, jedoch ist mir nichts anderes bekannt.
 
Es reicht, wenn ein KeyDown-Event für die Form implementiert ist. Damit das Ereignis aber auch ausgelöst wird, wenn ein anderes Steuerelement den Fokus besitzt, muss man einfach die Eigenschaft "KeyPreview" der Form auf true setzen.
 

Neue Beiträge

Zurück