我经历了 Vb.net 中的事件,我发现它们确实是一个了不起的功能..但仍然对如何有效地使用它们感到困惑。
真正的疑问是函数和子程序可能是事件的有效替代方案。无论我对事件做什么,我都可以通过函数和方法来做到这一点。无论哪里有 Raisevent,我都可以用函数或过程代替它。那么,事件的真正好处是什么?在哪些情况下我可以使用它们而不是函数和过程?
我经历了 Vb.net 中的事件,我发现它们确实是一个了不起的功能..但仍然对如何有效地使用它们感到困惑。
真正的疑问是函数和子程序可能是事件的有效替代方案。无论我对事件做什么,我都可以通过函数和方法来做到这一点。无论哪里有 Raisevent,我都可以用函数或过程代替它。那么,事件的真正好处是什么?在哪些情况下我可以使用它们而不是函数和过程?
让我们看看你是否理解它的例子。你有Button
控制权。它定义了很多事件(Click,MouseDown,Keypress
...)。当您在 a 中放置一个按钮时Form
,您可以决定要管理哪些事件。因此,在表单中,您可以在单击按钮时执行某些操作,或者不执行任何操作。
想象一下,如果这是用常规方法完成的。在这种情况下,按钮应该引用按钮所在的表单,并且表单应该有一个Click
方法,是否使用它。
事件驱动编程可以很容易地定义一些事件以在类中发生某些事情时发出信号,并且是创建实例的类决定该事件是否相关。
谢谢你的澄清,我明白了。我错过的一点是:事件在同一个类中触发,但执行是在不同的类中完成的。
我的意思是,当我定义一个类时,我可以将 RaiseEvent 放在某处以识别某些东西,但我将事件与不同类中的子相关联。
所以,在这样一个名为 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
否则,我的意思是如果事件在它们定义的同一个类中触发,则 sub 和函数可以替换事件。
谢谢大家