KeyPressEvent und Form

123arne

Mitglied
Hallo,

ich habe ein Problem mit dem KeyPressEvent.
In meinem Form1 ist das Event so eingetragen:
Code:
    this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);

und die Verarbeitung sieht so aus:
Code:
private void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
 {
   if (e.KeyChar.ToString() == Keys.Enter.ToString()) 
 	    schickeString zur Weiterverarbeitung;
    meinString +=e.KeyChar;
 }

Wenn ich das Programm zum ersten Mal starte funktioniert das auch soweit. Aber wenn ich zwischenzeitlich einen Button in dem Form anklicke steht der Fokus auf dem Button und meine Tastatureingaben werden ignoriert.
Wo muss das event hin, damit meine Tastatureingaben immer verarbeitet werden?

Gruß Arne
 
Die Form hat eine Eigenschaft KeyPreview. Diese musst du auf true setzen. Dadurch werden Tastaturereignisse, die in Controls auftreten auch an das Formular gesendet.
 
Danke schon mal bis hierhin,
hat auch bedingt geholfen. Die "normalen" Tasten werden jetzt auch verarbeitet, also in diesem Fall in einem string gespeichert. Nur bei der Enter-Taste, die ja eigentlich den string dann abschicken soll, reagiert der Button, auf dem zuletzt geklickt wurde und der noch mit dieser gepunkteten Linie markiert ist.
Weitere Ideen?
 
Dann machen wir das jetzt mal anders:
Was genau willst denn überhaupt machen? Ich bekomm da nur mit, dass du da irgendwie was schreiben willst, was man nicht sieht und das soll dann per Enter abgeschickt werden. Macht aber für mich derzeit genau NULL sinn.
 
Das Programm soll auf einem Rechner mit einem BarcodeScanner laufen. Der scanner liefert eine Nummer mit abschliessendem Enter, als ob man es auf einer Tastatur eintippt.
Durch Enter wird der String abgeschickt zur Prüfung ob die Nummer gültig ist. Das Form1 hat einen Button, mit dem man sich ein zweites Fenster mit einem Tastenfeld auf dem Bildschirm holt, falls mal ein Barcode nicht gelesen werden kann. Da tippt man die Nummer dann von Hand ein (über ein Touchscreen) und schliesst das Fenster wieder. Dann soll der nächste Barcode wieder über den BarcodeScanner kommen. Leider nimmt er dann das kommende Enter immer als Anlass den Button wieder zu betätigen, und nicht wie gewünscht um die Nummer abzuschicken.

Gruß Arne
 
Wieso liest du den String vom Barcode-Reader nicht in ein Textfeld ein und fangst dort das Enter ab? Das direkt auf der Form zu machen ist etwas unglücklich.
 
Bleibt das Problem nicht das Gleiche? Muss ich dann das Textfeld erst wieder fokussieren um neue Barcodes einzulesen? Das Programm soll Idiotensicher laufen.
 
Nein, wennst es gscheit machst nicht. Immerhin sieht der Benutzer der Software dann auch was via des Scanners angekommen ist - in manchen Fällen auch nicht ganz blöd.
 

Neue Beiträge

Zurück