Vb.net 从另一个控件触发事件

Vb.net 从另一个控件触发事件,vb.net,raiseevent,Vb.net,Raiseevent,我正在使用vb.net和winform。我遇到了一个问题,在过去的几个小时里我一直在努力解决这个问题 我有一个主用户控件,我在其中添加了一个groupbox,在该groupbox中添加了如下控件: 主用户控件 Me.GroupBox1.Controls.Add(Me.ctlWithDropDown) 带下拉菜单的用户控件 Me.Controls.Add(Me.ddList) Private Sub ddlList_SelectionChanged(ByVal sender As Object

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

我有一个主用户控件,我在其中添加了一个groupbox,在该groupbox中添加了如下控件:

主用户控件

Me.GroupBox1.Controls.Add(Me.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
主usercontrol继承基类,该基类有一个将值设置为true或false的事件,如下所示:

 Public Event SetFlag(ByVal value As Boolean)

我想知道如何在触发SelectionChanged事件时从dropdownlist触发/设置此布尔值。在这个问题上有什么帮助吗?

我想me.ctl下拉列表是您通过编程制作的?如果是这样的话,这类事情应该适合你

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

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

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

在SelectedChanged的处理程序中使用RaiseEvent,我已经更新了更多的信息。您是否可以通过下拉菜单清除主用户控件和用户控件上的内容。我在这里迷路了。你的编辑把我弄糊涂了。请更好地解释你的问题和代码结构,我会编辑。它更像是用户控件上的用户控件。第一个用户控件保存第二个用户控件,该控件具有下拉列表。第一个用户控件继承具有事件调用SetFlag(布尔)的父控件。在第二个用户控件上,当下拉列表的事件“SelectionChanged”被激发时,我想要提升事件SetFlag(布尔值)。我该怎么做?没关系,你的建议奏效了。我以前从未参加过募捐活动,所以我有点困惑。但现在一切都好了。非常感谢你的帮助!