我有一个事件处理程序,可以很好地处理它的事件。但是,我不希望能够直接调用处理程序,或者更具体地说,让我的程序员能够直接调用它,因为我只想在激光器电流设置时更新nudCurrent.Value。
Public Class TestClass
Dim WithEvents myCurrentSource As New CurrentSourceClass
Private Sub TestScript()
'among other things, sets current to 85
myCurrentSource.SetCurrent(85)
End Sub
Private Sub handleLaserCurrentSet() Handles myCurrentSource.LaserCurrentSet
Me.nudCurrent.Value = myCurrentSource.GetCurrent()
End Sub
End Class
Public Class CurrentSourceClass
Public Event LaserCurrentSet()
Private currentSet As Double = Double.NaN
Public Sub SetCurrent(ByVal dCurrentAmps As Double)
' set the current on the current source here
Me.currentSet = dCurrentAmps
' then raise the event
RaiseEvent LaserCurrentSet()
End Sub
Public Function GetCurrent() As Double
Return Me.currentSet
End Function
End Class
我想不出在其范围内限制对事件处理程序例程的访问的方法,所以我正在寻找另一种方法来做到这一点。什么是最佳做法?
*我知道我可以在设置当前后放置me.nudCurrent.Value = 85
,但我喜欢事件驱动的UI更新的整洁。我可以吃蛋糕吗?
答案 0 :(得分:2)
您可以使用匿名事件处理程序
AddHandler myCurrentSource.LaserCurrentSet,
Sub()
Me.nudCurrent.Value = myCurrentSource.GetCurrent()
End Sub
但请记住,可以从类中的任何位置设置值。你不能限制它。