Ich generiere eine Form dynamisch zur Laufzeit. Ebenso dynamisch dachte ich, ich könnte den Event KeyDown definieren.
Dim f As New Form f.KeyPreview = True
Ich möchte jetzt zur Laufzeit eine Sub dazufügen, die das KeyDown-Event dieses Formulars bearbeitet (beim Druck auf ESC soll die Form sich schließen).
Geht das überhaupt ohne größere Probleme oder ist es hier fast günstiger, eine vorher erstellte, leere Form (mit dem KeyDown-Event) des Projekts zu instanziieren?
Das geht natürlich zur Laufzeit. Ist auch bequemer, als leere Formulare vorzuhalten
Es ist schon eine Weile her, dass ich mit VB gearbeitet habe, aber ich meine, dass der Eventhandler so festgelegt wird (gleich nach der Erstellung des From):
AddHandler f.KeyDown, AddressOf f_KeyDown
Schließlich sollte der Eventhandler selbst auch noch existieren:
Private Sub f_KeyDown(sender As Object, e As KeyEventArgs) Console.WriteLine("add KeyDown logic here") End Sub
Habs inzwischen doch herausgefunden. Wahrscheinlich nicht optimal, aber funktioniert. Falls da jemand noch ein ähnliches Problem bekommt, hier meine bescheidene Lösung:
Dim WithEvents f As New Form f.KeyPreview = True AddHandler f.KeyDown, AddressOf childkey
Public Sub childkey(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) If e.KeyCode = Keys.Escape Then e.Handled = True sender.Close() sender.Dispose() End If End Sub