イベントをうまく処理するイベントハンドラーがあります。ただし、レーザー電流が設定されている場合にのみ 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 更新のきちんとした部分が気に入っています。私のケーキを持って食べてもいいですか?