Laden...

Enter-Taste in einer ComboBox abfangen

Erstellt von christof.k vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.483 Views
C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 19 Jahren
Enter-Taste in einer ComboBox abfangen

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

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo christof.k,

bei mir geht das! Welchen DropDownStyle hat den deine ComboBox? Oder suchst du ohnehin eher nach Form.AcceptButton?

herbivore

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 19 Jahren

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

49.485 Beiträge seit 2005
vor 19 Jahren

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

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 19 Jahren

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

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 19 Jahren

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

49.485 Beiträge seit 2005
vor 19 Jahren

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