2013-07-03 116 views
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 

主要usercontrol继承了一个基类,它有一个事件来将值设置为true或false,如下所示:

Public Event SetFlag(ByVal value As Boolean) 

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

+0

在处理器中使用RaiseEvent对于selectedchanged – user1937198

回答

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 
+0

我已经更新了一些更多信息。你能清楚哪些放在主要的用户控件上,以及放在用户控件ctlWithDropDown上的内容。我迷失在这里。 – Calvin

+0

你的编辑让我困惑了一些。请解释你的问题和代码结构好一点,我会编辑。 – N0Alias

+0

它更像是用户控件上的用户控件。第一个用户控件持有第二个用户控件,该控件具有一个下拉列表。第一个用户控件继承了具有事件调用SetFlag(boolean)的父类。在第二个用户控件上,当下拉列表的事件“SelectionChanged”被触发时,我想引发事件SetFlag(boolean)。我将如何做到这一点? – Calvin

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 
相关问题