Hallo,
ich habe eine Funktion in einem Modul geschrieben, die für alle TextBoxen in einem als Parameter übergebenen Form einen Handler hinzufügen soll.
Das funktionert auch soweit.
Was nicht funktioniert ist der umgekehrte Weg
'mod_Functions_RemoveCommonHandlers()' wird zwar fehlerfrei durchlaufen, die Handle bleiben aber aktiv. D.h. sobald ich den Text einer TextBox ändere wird weiterhin 'mod_Functions_ControlContentChanged()' aufgerufen.
Wo liegt mein Fehler?
ich habe eine Funktion in einem Modul geschrieben, die für alle TextBoxen in einem als Parameter übergebenen Form einen Handler hinzufügen soll.
VB.NET-Quellcode
- Friend Function mod_Functions_AddCommonHandlers(frmActiveForm As Form) As Boolean 'Das übergebene Form nach TabControls durchsuchen.
- Dim _handler As EventHandler = Sub(sender, e) mod_Functions_ControlContentChanged(sender, e, frmActiveForm) 'Lambda-Ausdruck
- For Each tc As TabControl In frmActiveForm.Controls
- 'Tab-Pages nach Windows-Forms-Controls durchsuchen.
- For Each tp As TabPage In tc.TabPages
- 'Windows-Forms-Controls
- For Each ctrl As Control In tp.Controls
- If TypeOf ctrl Is TextBox Then
- AddHandler ctrl.TextChanged, _handler
- End If
- Next ctrl
- Next tp
- Next tc
- Return True
- End Function
Das funktionert auch soweit.
Was nicht funktioniert ist der umgekehrte Weg
VB.NET-Quellcode
- Friend Function mod_Functions_RemoveCommonHandlers(frmActiveForm As Form) As Boolean 'Das übergebene Form nach TabControls durchsuchen.
- Dim _handler As EventHandler = Sub(sender, e) mod_Functions_ControlContentChanged(sender, e, frmActiveForm) 'Lambda-Ausdruck
- For Each tc As TabControl In frmActiveForm.Controls
- 'Tab-Pages nach Windows-Forms-Controls durchsuchen.
- For Each tp As TabPage In tc.TabPages
- 'Windows-Forms-Controls
- For Each ctrl As Control In tp.Controls
- If TypeOf ctrl Is TextBox Then
- RemoveHandler ctrl.TextChanged, _handler
- End If
- Next ctrl
- Next tp
- Next tc
- Return True
- End Function
'mod_Functions_RemoveCommonHandlers()' wird zwar fehlerfrei durchlaufen, die Handle bleiben aber aktiv. D.h. sobald ich den Text einer TextBox ändere wird weiterhin 'mod_Functions_ControlContentChanged()' aufgerufen.
Wo liegt mein Fehler?