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