0

我正在使用 vb.net 和 winform。我遇到了一个问题,在过去的几个小时里我一直在努力解决这个问题。

我有一个主用户控件,我添加了一个组框,并在该组框内添加了一个这样的控件:

主用户控件

Me.GroupBox1.Controls.Add(Me.ctlWithDropDown)

用户控件 ctlWithDropDown

Me.Controls.Add(Me.ddList)

Private Sub ddlList_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlList.SelectionChanged
'some simple logic here to check if value changed        

End Sub

主用户控件继承了基类,该基类具有将值设置为 true 或 false 的事件,如下所示:

 Public Event SetFlag(ByVal value As Boolean)

我想知道在触发 SelectionChanged 事件时如何从下拉列表中触发/设置此布尔值。对这个问题有任何帮助吗?

4

2 回答 2

0

我认为 me.ctlDropDown 是您以编程方式制作的东西?如果是这样,那么这种事情应该适合你。

Public Sub Blah()
    Dim ctlDropDown As New ComboBox
    AddHandler ctlDropDown.SelectedIndexChanged, AddressOf IndexChangedHandler
    Me.GroupBox1.Controls.Add(ctlDropDown)
End Sub

Private Sub IndexChangedHandler()
    'Do whatever you need here.
End Sub

但是,如果这不是在运行时创建的,则应该创建一个事件处理程序,例如:

Private Sub IndexChangedHandler() Handles Me.ctlDropdown.SelectedIndexChanged
    'Do whatever you need here.
End Sub
于 2013-07-03T20:41:39.330 回答
0

为下拉列表连接一个事件处理程序:

AddHandler Me.ctlDropDown.SelectedIndexChanged, AddressOf ddlSelectedIndexChanged
Me.GroupBox1.Controls.Add(Me.ctlDropDown)

确保在控件中创建 ddlSelectedIndexChanged 并让它触发 SetFlag 事件:

Protected Sub ddlSelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)

   RaiseEvent SetFlag(True)

End Sub
于 2013-07-03T20:41:53.923 回答