在VB.NET中记录和回放引发的事件
我使用VB.NET中的事件实现了两个类之间的通信。现在我想存储(记录)所有发生的事件,并在以后重新引发(重播)它们 以下是我已经得到的: 类别1:在VB.NET中记录和回放引发的事件,.net,vb.net,events,.net,Vb.net,Events,我使用VB.NET中的事件实现了两个类之间的通信。现在我想存储(记录)所有发生的事件,并在以后重新引发(重播)它们 以下是我已经得到的: 类别1: Public Event Button1Pressed(ByVal sender As Object) Private Sub btnButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnButton.Click RaiseEvent Button1Pre
Public Event Button1Pressed(ByVal sender As Object)
Private Sub btnButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnButton.Click
RaiseEvent Button1Pressed(Me)
End Sub
Public Sub handleDisplayChanged(ByVal sender As System.Object, ByVal txt As String)
'... Some code
End Sub
第2类:
Public Event DisplayTextChangedEvent(ByVal sender As System.Object, ByVal text As String)
'In the constructor:
AddHandler Me.DisplayTextChangedEvent, AddressOf class1Instance.displayText
AddHandler class1Instance.Button1Pressed, AddressOf Me.buttonPressed
'Somewhere in the logic:
Public Sub buttonPressed(ByVal sender As Object)
'Compute text
'...
RaiseEvent DisplayTextChangedEvent(text)
End Sub
我可以向我想要记录的事件添加另一个处理程序,但是在处理程序中,我只获取传递给事件的参数,而不是事件本身。另一件我不知道如何解决的事情是,我不能从外部类引发事件
我的问题有好的解决方法吗?要记录事件,您可以制作一个辅助方法来进行记录和提升。因此,与此相反:
RaiseEvent Button1Pressed(Me)
这样做:
Sub RaiseButton1PressedEvent()
RaiseEvent Button1Pressed(Me) <--raise the event
RecordEvent("Button1Pressed") <--record the event
End Sub
现在,如果你有很多活动,这可能会变得乏味。有两种很好的方法可以解决这个问题:
子RaiseEventByName(sEventName作为字符串)来代替子RaiseButton1PressedEvent()
谢谢你的回答。我希望有一个更优雅的解决方案,但也许这是唯一的方法。你知道内置在VisualStudio中的T4模板系统吗?它使代码生成非常容易。我一直在使用它来生成许多类似但不完全相同的方法。例如,这就是创建类型化数据集和LinqToEntities实体类的方式。这是一件完全合理的事情。
Sub ReplayButton1PressedEvent()
RaiseEvent Button1Pressed(Me) <--raise the event
End Sub