Alpha_Wolf - So 08.07.07 20:05
Titel: Texteingabe zwischenspeichern bzw. rückgängig machen
Hallo Leute,
ich benutze einen Barcodescanner der direkt Tastatureingaben tätigt. Nun soll mein Programm ausschließlich über den Scanner arbeiten und habe mir deshalb zum Beispiel fürs speichern einen Barcode erstellt. Dieser heisst "...CONFIRM..."
Nun soll aber wenn dieser Barcode eingelesen wird das ganze nicht in das Textfeld geschrieben werden sondern ein Kommando erfolgen.
Das funktioniert auch. Nur schreibt er mir natürlich das "...CONFIRM..." mit rein.
Wie kann ich verhindern das er nur das nicht reinschreibt? Oder wie kann ich die Eingabe erstmal zwischenspeichern und dann wenn sie nicht eines der statischen Barcodes ist ausgeben?
(Habe versucht mit "e.Handled = true" im KeyPress Event das zu verhindern aber es verhindert nur dass das aktuelle Char nicht geschrieben wird..)
Nachfolgend mein Code:
KeyPreview der Form ist True und die Funktion "SetNextControlOnEnter" überschreibt das KeyPress Event der Form. GlobalConst ist meine Konstantenklasse.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| private string m_InputString;
private Control GetNextEdit(Control aThisControl) { Control ctlNext = GetNextControl(aThisControl, true);
if (ctlNext is MaskedTextBox) return ctlNext; else GetNextEdit(ctlNext);
return null; }
private void SetNextControlOnEnter(object sender, KeyPressEventArgs e) { if (e.KeyChar.ToString() == GlobalConst.ENTER) { if (VerifyInputString() == false) { Control ctlNext = GetNextControl((Control)sender, true); ctlNext = GetNextEdit(ctlNext); if (ctlNext != null) ctlNext.Focus(); } } else { m_InputString += e.KeyChar.ToString(); } }
private Boolean VerifyInputString() { Boolean l_return = false;
switch(m_InputString) { case GlobalConst.CONFIRM: MessageBox.Show("Bestätigen..."); l_return = true; break; case GlobalConst.CANCEL: MessageBox.Show("Abbrechen..."); l_return = true; break; case GlobalConst.PREVIOUS: MessageBox.Show("Zurück..."); l_return = true; break;
case GlobalConst.NEXT: MessageBox.Show("Vor..."); l_return = true; break;
case GlobalConst.FIND: MessageBox.Show("Finden..."); l_return = true; break;
case GlobalConst.CONFIG: MessageBox.Show("Konfiguration..."); l_return = true; break; default: break; } m_InputString = "";
return l_return; } } |
Vielen Dank!