对Windows窗体中的控件使用通用事件处理程序

本文关键字:事件处理 程序 控件 Windows 窗体 | 更新日期: 2023-09-27 18:00:45

我有一堆控件,这些控件在表单加载时从数据库中填充。我使用Dictionary(control.Name作为Key,control.Value作为Value)来存储初始值。当用户更改值时,我使用其他Dictionary加载当前值,并将其与initalDictionary进行比较。如果值不同,我会运行某种代码来提示用户进行更改。我认为它更粗糙,正在寻找更好的解决方案。请告知。

感谢

对Windows窗体中的控件使用通用事件处理程序

尝试这个

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