vb.net我动态创建的复选框click事件处理程序未触发

问题描述 投票:0回答:1

我正在编写Windows应用程序来为开发人员管理服务器(apache,nginx,tomcat等)。我为每个服务器动态创建控件,因为它们是由配置驱动的。我已经成功地为按钮和组合框创建了处理程序,但是没有触发复选框的处理程序。我想我做的完全一样,但显然我缺少了一些东西。

这是处理程序。所有复选框中只有一个]

Private Sub AddTheCheckboxClick(rCheckBox As CheckBox)
    AddHandler rCheckBox.Click, Sub(rSender, rEventargs)
                                    Cursor = Cursors.WaitCursor
                                    Dim lStatus As Boolean = False
                                    Cursor = Cursors.Default
           'do some stuff here for the relevant server

                                End Sub
End Sub

我在处理程序的顶部放置一个中断,运行应用程序,单击复选框,它不会触发。

此代码将控件从模板复制到屏幕上的相关位置,然后添加处理程序。整套控件。每个服务器创建一次。

'Service checkbox
.Controls.Add(CopyPlaceControl(lDinamicListview, chkServerService, lLocation, True, lGenericServer))
            AddTheCheckboxclick(chkServerService)

 'Server switch and button click event handler
            lNewServerSwitch = CopyPlaceControl(lDinamicListview, bServerSwitch, lLocation, True, lGenericServer)
            .Controls.Add(lNewServerSwitch)
            AddThebuttonclick(lNewServerSwitch)

我看到了针对ASP的类似查询的答复,通过将AutoPostback属性设置为true可以解决此问题,但是该属性在vb.net中不存在,在我的上下文中可能不相关。

我还试图在代码中显式调用该事件,只是为了检查调用时是否触发该事件,但是我没有找到任何方法。像.Performclick()中的按钮一样容易,但是我没有为Checkbox找到一个按钮。欢迎所有建议。

.net vb.net dynamic user-controls
1个回答
0
投票

看起来像CopyPlaceControl方法将基于给定的(chkServerService)创建新控件,然后将新控件添加到.Control集合中。但是,您将点击处理程序添加到原始复选框(chkServerService)而不是新的复选框。

'Service checkbox
Dim newCheckBox = 
    CopyPlaceControl(lDinamicListview, chkServerService, lLocation, True, lGenericServer)
AddTheCheckboxclick(newCheckBox)

.Controls.Add(newCheckBox)
© www.soinside.com 2019 - 2024. All rights reserved.