我有一个看起来像这样的课程:
Public Class LumberPiece
Public boardLength As Double
Public currentLeftEndPosition As Double
Public currentRightEndPosition As Double
Public Sub New(ByVal bl As Double, ByVal clp As Double)
boardLength = clsDimension.ConvertInchesToMillimeters(bl)
currentLeftEndPosition = clsDimension.ConvertInchesToMillimeters(clp)
currentRightEndPosition = clsDimension.ConvertInchesToMillimeters(clp + bl)
End Sub
End Class
我想以某种方式有一个触发器,每当currentLeftEndPosition被改变时(rightEnd总是等于leftend + boardLength),计算currentRightEndPosition。
我该怎么做?
答案 0 :(得分:2)
您可以使用属性执行此操作。通过创建字段属性,您可以控制在读取属性值和设置属性值时发生的情况。例如:
Public Class LumberPiece
Public Property BoardLength As Double
Public Property CurrentLeftEndPosition As Double
Get
Return _currentLeftEndPosition
End Get
Set(value As Double)
_currentLeftEndPosition = value
CurrentRightEndPosition = clsDimension.ConvertInchesToMillimeters(_currentLeftEndPosition + BoardLength)
End Set
End Property
Private _currentLeftEndPosition As Double
Public Property CurrentRightEndPosition As Double
Public Sub New(ByVal bl As Double, ByVal clp As Double)
BoardLength = clsDimension.ConvertInchesToMillimeters(bl)
CurrentLeftEndPosition = clsDimension.ConvertInchesToMillimeters(clp)
End Sub
End Class
或者,您可以选择每次访问时计算字段:
Public Class LumberPiece
Public Property BoardLength As Double
Public Property CurrentLeftEndPosition As Double
Public ReadOnly Property CurrentRightEndPosition As Double
Get
Return clsDimension.ConvertInchesToMillimeters(CurrentLeftEndPosition + BoardLength)
End Get
End Property
Public Sub New(ByVal bl As Double, ByVal clp As Double)
BoardLength = clsDimension.ConvertInchesToMillimeters(bl)
CurrentLeftEndPosition = clsDimension.ConvertInchesToMillimeters(clp)
End Sub
End Class