| 

.NET C# Java Javascript Exception

1
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?
News:
01.02.2017
muffi 1,4k 1 9
muffi 1,4k 1 9
2 Antworten
2
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
01.02.2017
jsc 289 1 7
jsc 289 1 7
0
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
01.02.2017
muffi 1,4k 1 9
Da kann jemand schneller tippen als ich :)
jsc 01.02.2017
...und dann noch im Wesentlichen die gleiche Lösung... +1
muffi 01.02.2017

Stelle deine .net-Frage jetzt!