Laden...

KeyDown wird nicht ausgelöst oder kommt nicht an

Erstellt von DeNico vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.688 Views
Thema geschlossen
D
DeNico Themenstarter:in
27 Beiträge seit 2012
vor 11 Jahren
KeyDown wird nicht ausgelöst oder kommt nicht an

Hi
Ich habe ein Problem mit dem KeyDown Event.
Ich möchte, wenn ich die entfernen Taste drücke das aktuelle listView Element auslesen lassen und dann aus einer SQL Tabelle löschen lassen.
Das löschen, sowie das auslesen funktioniert einwandfrei-also mit einem Button.

Folgendes Event habe ich erstellt.


private void listView1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                MessageBox.Show("Geht");
                e.Handled = true;
            }
        }

Kann mir jemand evtl. sagen wo mein Fehler liegt?
Ich bin schon seit gestern Mittag verzweifelt am googlen und probieren, ob es irgendwie geht...

16.835 Beiträge seit 2008
vor 11 Jahren

Debug benutzt? Kommst Du überhaupt in den Event rein..?

D
DeNico Themenstarter:in
27 Beiträge seit 2012
vor 11 Jahren

Hab ich gerade versucht. Leider nein.

Habe ich eventuell etwas bei meinem Code falsch gemacht?

Die Option KeyPreview habe ich in meiner Form aktiviert. Allerdings wird die Form2, in der sich das Event befindet, durch einen Button in Form1 geöffnet. Muss ich die KeyPreview dort auch aktivieren oder spielt das keine Rolle?

S
64 Beiträge seit 2008
vor 11 Jahren

Hallo,

ich hatte bei einem Projekt auch dieses Problem, dass offenbar das KeyDown-Event nicht zuverlässig gefeuert wird.

Bei mir hat dann folgendes geholfen


        protected override bool ProcessDialogKey(Keys keyData)
        {
            if (keyData == Keys.Delete)
            {
                // Aktion
            }

            return base.ProcessDialogKey(keyData);
        }

Du musst dann allerdings prüfen, ob dein Listview gerade aktiv ist, weil du für das gesamte Fenster die KeyDown-Events abfängst.

Gruß
Maik

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo DeNico,

die Tatsatur-Events gehen nur an das Control mit dem Focus. Wenn das ListView den Focus nicht hat, bekommt es keine Events.

Mit KeyPreview gehen die Events zusätzlich an das Form (aber nicht zusätzlich an das ListView), egal welches Control den Focus hat.

Außerdem muss der EventHandler natürlich überhaupt registriert sein, siehe [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse).

Das fällt allerdings alles unter Grundlagen, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

Thema geschlossen