对Windows窗体中的控件使用通用事件处理程序
本文关键字:事件处理 程序 控件 Windows 窗体 | 更新日期: 2023-09-27 18:00:45
我有一堆控件,这些控件在表单加载时从数据库中填充。我使用Dictionary(control.Name作为Key,control.Value作为Value)来存储初始值。当用户更改值时,我使用其他Dictionary加载当前值,并将其与initalDictionary进行比较。如果值不同,我会运行某种代码来提示用户进行更改。我认为它更粗糙,正在寻找更好的解决方案。请告知。
感谢
尝试这个
For Each ctrl As Control In me.Controls
If TypeOf ctrl Is CheckBox Then
AddHandler (DirectCast(ctrl, CheckBox).CheckedChanged), AddressOf Control_Changed
ElseIf TypeOf ctrl Is TextBox Then
AddHandler (ctrl.TextChanged), AddressOf Control_Changed
ElseIf TypeOf ctrl Is NumericUpDown Then
AddHandler (DirectCast(ctrl, NumericUpDown).ValueChanged), AddressOf Control_Changed
End If
Next
Sub Control_Changed(ByVal sender As Object, ByVal e As EventArgs)
' handle events here
End Sub