簡體   English   中英

多個控件的事件處理程序 vb.net

[英]event handler for multiple controls vb.net

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

誰能幫我解決這個問題?

編輯

我發現將控件放在多個控件中,表單上是一個面板,面板內部是不同的組框,這些組框有控件試圖捕獲它們的事件

因此,正如拉斯所說,它似乎確實有效。

編輯到位以說明容器中的控件

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
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM