创建与变量相关的触发器

时间:2013-07-30 15:42:38

标签: vb.net visual-studio-2010 triggers

我有一个看起来像这样的课程:

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。

我该怎么做?

1 个答案:

答案 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