从另一个控件触发事件

时间:2013-07-03 20:35:05

标签: vb.net raiseevent

我正在使用vb.net和winform。我遇到了一个问题,过去几个小时我一直在抨击我。

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

main usercontrol

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事件触发时,如何从下拉列表中触发/设置此布尔值。有关这个问题的任何帮助吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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