动态添加处理程序



表单上有大量按钮(144个按钮)。每个按钮的名称是不同因素的组合。

我需要他们在压力下都做同样的事情。我在一个名为"点击按钮"的私人潜艇下举办了这次活动。

我想使用一个循环,将每个按钮添加到AddHandler的"ClickButton"事件中。

然而,首先,我需要处理每个按钮。我通过在循环中动态构建它们的名称来实现这一点。

Dim PeriodRoomID As New Button
Dim cntrl() As Control    
For Each Row In dsAllRooms.Tables("sqlAllRooms").Rows
            For Count = 1 To 13
                RoomID = Row.Item(0)
'This is where the name of each room is dynamically created. 
'It is stored in PeriodRoomID.name
                PeriodRoomID.Name = "R02" & RoomID.PadLeft(3, "0"c) & Count
                cntrl = Me.Controls.Find(PeriodRoomID.Name, True)
                AddHandler cntrl(0).Click, AddressOf ClickButton
            Next
        Next

问题是什么都没发生。AddHandler不起作用。然而,如果我只是简单地写下其中一个按钮的名称;

AddHandler R020011, AddressOf ClickButton

然后它就起作用了。Me.Controls.Find出现问题。它似乎找不到该名称下的任何按钮,这很奇怪,因为我在其他部分使用了相同的代码,它找到了按钮。

您从for语句中定义Dim PeriodRoomID As New Button,因此每次设置名称时你把它设置为相同的按钮PeriodRoomID,所以你根本不需要这个按钮和cntrl,只是:

For Each Row In dsAllRooms.Tables("sqlAllRooms").Rows
            For Count = 1 To 13
                RoomID = Row.Item(0)
                'This is where the name of each room is dynamically created.   
                dim Ctrls = Me.Controls.Find("R02" & RoomID.PadLeft(3, "0"c) & CStr(Count), True)
                If (Ctrls.Count > 0) Then
                   AddHandler Ctrls(0).Click, AddressOf ClickButton
                End If
            Next
Next

相关内容

  • 没有找到相关文章

最新更新