Hallo VB-Spezialisten!
Ich habe ein Formular erstellt, auf dem ich dynamisch zur Laufzeit diverse Buttons einfüge.
Den entsprechenden EventHandler habe ich immerhin schon hinbekommen.
Was bisher nicht funktioniert, ist der modul-übergreifende Aufruf der zugewiesenen Sub, sofern sich diese nicht in Form1 befindet (Name und Beschriftung des Buttons sowie Name der Sub sind immer identisch)
Habe gelesen, dass dies auch mit "System.Reflection" funktionieren soll. Muss aber zugeben, dass ich den Einsatz noch nicht verstehe.
Kann mir hier jemand helfen? Vielleicht mit einem für Anfänger geeigneten Beispiel?
Viele Grüße
Russi
Hier mein Code bisher (aufs Wesentliche reduzierte Version):
Ich habe ein Formular erstellt, auf dem ich dynamisch zur Laufzeit diverse Buttons einfüge.
Den entsprechenden EventHandler habe ich immerhin schon hinbekommen.
Was bisher nicht funktioniert, ist der modul-übergreifende Aufruf der zugewiesenen Sub, sofern sich diese nicht in Form1 befindet (Name und Beschriftung des Buttons sowie Name der Sub sind immer identisch)
Habe gelesen, dass dies auch mit "System.Reflection" funktionieren soll. Muss aber zugeben, dass ich den Einsatz noch nicht verstehe.
Kann mir hier jemand helfen? Vielleicht mit einem für Anfänger geeigneten Beispiel?
Viele Grüße
Russi
Hier mein Code bisher (aufs Wesentliche reduzierte Version):
VB.NET-Quellcode
- Public Class Form1
- Private Sub GenerateForm()
- Dim oSub() As Object = {"Sub1", "Sub2"}
- Dim iSub As Integer
- Dim b As Button
- With Me
- .Text = "MeinTitel"
- .Width = 520
- .Height = 30 * (UBound(oSub) + 2)
- End With
- For iSub = LBound(oSub) To UBound(oSub)
- b = New Button
- With b
- .Name = CStr(oSub(iSub))
- .Text = CStr(oSub(iSub))
- ' . ...
- End With
- AddHandler b.Click, AddressOf b_click
- Me.Controls.Add(b)
- Next
- b = Nothing
- End Sub
- Private Sub b_click( _
- ByVal sender As System.Object, _
- ByVal e As System.EventArgs)
- Dim str As String
- str = Strings.Right(sender.ToString, Len(sender.ToString) - Strings.InStr(sender.ToString, ":") - 1)
- ' "Me" ist falsch, Argument ist aber obligatorisch
- ' Sub kann sich in beliebigem anderen Modul des Projektes befinden.
- CallByName(Me, str, CallType.Method)
- 'System.Reflection????
- End Sub
- End Class