Hallo!
Ich möchte gerne die Enter-Taste meiner Combobox abfangen. Per KeyDown geht das aber anscheinend nicht, da alle Tasten bis auf die Enter-Taste übergeben werden....Gibt es da noch eine weitere Idee?
Vielen Dank
Christof
Hallo christof.k,
bei mir geht das! Welchen DropDownStyle hat den deine ComboBox? Oder suchst du ohnehin eher nach Form.AcceptButton?
herbivore
Hallo!
Mein DropDownStyle is DropDown.
Ich habe des folgenden Testcode eingefügt:
void CbProject_PathKeyPress(object sender, System.Windows.Forms.KeyEventArgs e)
{
MessageBox.Show(e.KeyCode.ToString());
}
Und bekomme damit alle Tasten, nur nicht return, tab, esc usw.
Nun habe ich gelesen, dass ich die IsInputKey methode überschreiben muss, um diese Sondertasten zu erhalten. Muss ich dazu eine Ableitung der Klasse ComboBox machen und dort die Veränderungen durchführen oder geht es irgendwie auch simpler?
Vielen Dank
Christof
Hallo christof.k,
bei mir geht es so (egal ob 1.1 oder 2.0):
// im Konstruktor
cbx = new ComboBox ();
cbx.DropDownStyle = ComboBoxStyle.DropDown;
cbx.KeyDown += new KeyEventHandler (CBXKeyDown);
protected void CBXKeyDown (Object sender, KeyEventArgs ke)
{
if (ke.KeyCode == Keys.Enter) {
// Bei Enter landet man hier (sic!), egal ob nix|Ctrl|Alt|Shift
}
}
Bist du sicher, dass du KeyDown benutzt?
herbivore
Leider funktioniert das bei mir nicht, aber mich wundert, dass es bei Dir funktioniert.
Demnach müßte auch die Tab-Taste bei Dir so verarbeitbar sein, was dazu führen würde, dass Du nicht mehr zwischen Controls hin- und herspringen könntest.
Außerdem sagt die PSDK doch bei der Info zu Control.KeyDown:
Bestimmte Tasten wie die EINGABETASTE, die TAB- und die ESC-Taste sowie die Pfeiltasten werden von Steuerelementen automatisch behandelt. Damit diese Tasten das KeyDown-Ereignis auslösen, müssen Sie in jedem Steuerelement des Formulars die IsInputKey-Methode überschreiben.
Kann man denn die Methode einfach überschreiben, ohne eine abgeleitete Klasse zu erstellen?
Hoffentlich können wir die Unklarheit hier beseitigen...
Dankeschön
Christof
LÖSUNG:
Ich habe den Defaultbutton definiert, und bei Enter wird dieser halt ausgeführt....trotzdem verstehe ich nicht, wieso dass entgegen der Doku ist....
Christof
Hallo christof.k,
trotzdem verstehe ich nicht, wieso dass entgegen der Doku ist....
vielleicht hatte der Autor der Doku in seinem Testprogramm auch den AcceptButton gesetzt 😉
herbivore