Předem děkuji. Na začátek musím napsat, že už tady diskuze na podobné téma proběhla viz. http://www.vbnet.cz/forum-tema--234-disk.... Avšak potřebuji helpnout z následující procedurou: Potřebuji provést metodu na Button2_Click. Ale pozor z objetku button2 mám již odebránu událost Button2_Click (příkazem removehandler) a samotné volání je možné pouze pomocí názvu procedury (tzn. typ string "Button2_Click") tzn. že nelze použít volání: Button2_Click(sender,e) Button2.PerformClick Jak psal Tomaš Hercig, je možné zavolat proceduru nebo funkci dle názvu pomocí reflection, ale pro případ, že volám samotnou proceduru Button2_Click to nefunguje (viz. níže kód Tomáše Heciga)
Public Class Form1
Public Sub MojeProcedura(ByVal p1 As String, ByVal p2 As String)
'zobrazit parametry
MsgBox("ahoj " & p1 & " " & p2)
End Sub
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
'zavolat proceduru jménem
Me.GetType().GetMethod("MojeProcedura").Invoke(Me, New Object() {"parametr 1", "parametr 2"})
End Sub
End Class
Jinak jsem připravil malou ukázku pro testování zde (pozor button je s názvem button2)
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load RemoveHandler Button2.Click, AddressOf Button2_Click AddHandler Button2.Click, AddressOf NahradaDefaultu End Sub Private Sub NahradaDefaultu(ByVal sender As Object, ByVal e As System.EventArgs) ' Me.GetType().GetMethod("MojeProcedura").Invoke(Me, New Object() {"parametr 1", "parametr 2"}) ' Me.GetType().GetMethod("Button2_Click").Invoke(Me, New Object() {sender, e}) 'nefunguje ??? 'Zde je nutné pomocí názvu "Button2_Click" zavolat proceduru Button2_Click End Sub Public Sub MojeProcedura(ByVal p1 As String, ByVal p2 As String) 'zobrazit parametry MsgBox("ahoj " & p1 & " " & p2) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click MsgBox("Ok") End Sub End Class
|