Всем форумчанам доброго времени суток.
Много лет не программировал на VB, и вот возрождая традиции столкнулся с проблемкой.
Имеем пользовательский контрол, внутри которого динамически на groupbox добавляются пользовательские контролы разных типов.
Задача передать вызов события родителям, причем чтобы событие работало для всех динамически добавленных на пользовательский контрол, контролов.
Сейчас же событие работает только для последнего добавленного контролла.
Понимаю что копать нужно в сторону AddressOf и Delegate но опыта работы с ними не было ибо работал на VB6 и знаком только с AddresOff, попытался сохранить ссылку на процедуру в контролле, но так как указателей нету то и как это сделать неясно.
Прощу помощи, заранее благодарен.
VB NET VS2008
Упрощенный код.
- Код: Выделить всё
Public Class ucFiles
Private m_list_element As XmlNodeList
Dim m_height As Integer
Dim m_Y As Integer = 6
Dim m_Items As Integer = -1
Dim m_Control As ucAction
Dim m_StartYMargin As Integer = 14
Dim m_MarginBottom As Integer = 2
Dim WithEvents newControler As ucConteroller
Private Sub AddFiles(ByRef xmlNodeEl As XmlNode)
newControler = New ucConteroller(xmlNodeEl)
Me.AddControl(newControler)
End Sub
Private Sub AddControl(ByRef control As System.Windows.Forms.Control)
control.Visible = True
m_height = control.Height + m_MarginBottom
m_Items = m_Items + 1
control.Location = New Point(6, m_height * m_Items + m_StartYMargin)
Me.GroupFiles.Controls.Add(control)
End Sub
// необходимо чтобы это событие было привязано ко всем добавленным динамически контроллам типа newControler
Private Sub newControler_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles newControler.Resize
MessageBox.Show("изменился размер = " & sender.Height)
End Sub
// и это тоже
Private Sub newControler_FilesAddEvent(ByVal Height As Integer) Handles newControler.FilesAddEvent
MessageBox.Show( "Событие добавления контролла" )
End Sub
End Class