我参加了Vb.net中的活动,我发现它们确实是一个非常棒的功能......但仍然对如何有效地使用它们感到困惑。
真正的疑问是函数和子函数可能是事件的有效替代品。无论我如何处理事件,我都可以通过功能和方法来做到这一点。无论哪里有Raisevent,我都可以用功能或过程代替它。那么,事件的真正好处是什么?在哪些情况下我可以使用它们而不是功能和程序?
答案 0 :(得分:2)
让我们看看你是否通过一个例子来理解它。你有Button
控件。它定义了很多事件(Click,MouseDown,Keypress
...)。当您在Form
中添加按钮时,您决定您要管理的活动。因此,在单击按钮或不执行任何操作时,您可以执行某些操作。
想象一下,如果这是用常规方法完成的。在这种情况下,按钮应该具有对按钮所在表单的引用,并且表单应该具有Click
方法,是否使用它。
事件驱动的编程很容易定义一些事件,以便在类中发生某些事件时发出信号,并且是创建实例的类,它决定该事件是否相关。
答案 1 :(得分:0)
谢谢你的澄清,我明白了。我错过的观点是:事件在同一个类中被触发,但执行是在不同的类中完成的。
我的意思是,当我定义一个类时,我可以将RaiseEvent放在某处识别某些东西,但我将该事件与另一个类中的sub相关联。
所以,在这个名为Wallet的类中,我可以发表如下声明:
If Dollars > 5 Then
RaiseEvent Above5()
End If
在名为AllWallet的不同类中:
Dim WithEvents myWallet as new Wallet
Sub myWallet_Above5() Handles myWallet.Above5
MsgBox("Dollars are more than 5")
End Sub
否则,我的意思是如果事件是在定义的同一个类中触发的,则子函数和函数可以替换事件。
感谢所有