Одно возможное решение
Private Sub SomeMethod(ByVal variable As Integer)
AddHandler Me.SomeEvent,
Sub()
If (variable = 1) Then
Me.DoSomething()
End If
End Sub
Console.WriteLine("ciao")
End Sub
Я только что попробовал это, и это работает как шарм, так что я не знаю, почему ты так говоришь :( Visual studio 2010.
также можно сделать что-то подобноев VS2008 попробуйте второе решение, первое, кажется, работает только в 2010 году.
Если это не сработает, вы можете попробовать это, больше кода для записи:
Public Delegate Sub MyDelegate()
Public Class Class1
Public Event SomeEvent As MyDelegate
Private Class MyDelegateClass
Public Owner As Class1
Public Variable As Integer
Public Sub Method()
If (Variable = 1) Then
Owner.DoSomething()
End If
End Sub
End Class
Private Sub SomeMethod(ByVal variable As Integer)
Dim dc As New MyDelegateClass
dc.Owner = Me
dc.Variable = variable
AddHandler Me.SomeEvent, AddressOf dc.Method
Console.WriteLine("ciao")
End Sub
Public Sub DoSomething()
Console.WriteLine("hello")
End Sub
End Class
VisualСтудия синтаксического сахара делает что-то подобное с анонимным делегатом.