обработчик событий для нескольких элементов управления vb.net - PullRequest
1 голос
/ 06 июля 2011

AM пытается перехватить определенные события для некоторых элементов управления в форме.я попробовал это, но не запускает события

 For Each ctrl As Control In pnlGeneral.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

Может кто-нибудь помочь мне с исправлением?

EDIT

Я обнаружил, что размещаю элемент управления в несколькихэлементы управления, на форме находится панель, внутри панели находится другое групповое поле, эти групповые блоки имеют элементы управления, которые пытаются перехватить их события

Ответы [ 2 ]

4 голосов
/ 06 июля 2011

Итак, как сказал Ларс, похоже, что это работает.

отредактировано на месте для учета элементов управления в контейнерах

Private Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
    Dim ctrl As Control = Me.GetNextControl(Me, True)
    Do Until ctrl Is Nothing
        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
        ctrl = Me.GetNextControl(ctrl, True)
    Loop
End Sub

Private Sub Control_Changed(sender As System.Object, e As System.EventArgs)
    Debug.WriteLine(sender.ToString)
End Sub
0 голосов
/ 27 июня 2013
Private Sub Form_Activate(Byval sender As Object,Byval e as System.EventArgs) Handles Form.Activate

    Dim Ctrl as System.Windows.Forms.Control

    For Each Ctrl in Me.Controls
    If Typeof Ctrl Is System.Windows.Forms.TextBox then
    AddHandler Ctrl.GotFocus, AddressOf TextFocus
    AddHandler Ctrl.LostFocus, AddressOf TextUnfocus
    Next
End Sub

Private Sub TextFocus(ByVal sender As Object, ByVal e As System.EventArgs)
    CType(sender,System.Windows.Forms.TextBox).BackColor = Color.Blue
End Sub

Private Sub TextUnfocus(ByVal sender As Object, ByVal e As System.EventArgs)
    CType(sender, System.Windows.Forms.TextBox).BackColor = Color.White
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...