OK Единственный способ, которым я могу думать о том, чтобы создать класс, который создает событие, если число находится вне диапазона, определенного при создании экземпляра.
Хорошо, это класс, посмотрите комментарии, чтобы посмотреть, как это работает.
Friend Class MonitoredNumber(Of t As IComparable)
' Using of T means that the variable can be any type - Integer, Single, Double etc
Private MonitoredValue As t
Private _minValue As t
Private _maxValue As t
'this creates a an event handler
Public Event OutOfRange()
'this is the constructor that you will use when you create the "Variable" even though it is actually an instance of the MonitoredNumber class
'and it defines the minimum and maximum values
Public Sub New(min As t, max As t)
_minValue = min
_maxValue = max
End Sub
Public Property Value As t
Get
Return MonitoredValue
End Get
Set(value As t)
MonitoredValue = value
'if the "variable is set to a value outside the defined range, then the OutOfRangeEvent is raised
If MonitoredValue.CompareTo(_minValue) < 0 Or MonitoredValue.CompareTo(_maxValue) > 0 Then
RaiseEvent OutOfRange()
End If
End Set
End Property
End Class
Чтобы создать «переменный» добавьте в свой код, где вы определили переменную, которую вы хотите контролировать - с указанием его, как вам нравится, конечно
Dim WithEvents x As New MonitoredNumber(Of Integer)(4, 5)
В приведенной выше строке ключевого слова WithEvents
что событие OutOfRange обрабатывается обработчиком событий ниже.
Of Integer
следует изменить на какой номер номера, который вы хотите отслеживать. Если это двойной, то измените его на Of Double
и т. Д.
Эти два параметра являются минимальными и максимально допустимыми значениями для числа - изменили их на все, что вам нужно.
В вашей форме вам, наконец, необходимо добавить обработчик событий ниже для события OutOfRange
.
Private Sub MonitoredNumberChanged() Handles x.OutOfRange
'do stuff here to do what you want to do if the event is out of range
MessageBox.Show("Value out of range. Value =" & x.Value.ToString)
End Sub
Так использовать свой код, определить YPos, как
Dim WithEvents ypos As New MonitoredNumber(Of Integer)(0, 10)
я предполагаю 0 в качестве минимального значения, но вы можете изменить его на что угодно.
Затем в обработчике событий вы можете написать код, который вы хотите выполнить, когда число выходит за пределы допустимого диапазона.
Чтобы изменить значение числа, используйте ypos.value = ypos.value + 1 «, чтобы добавить один к ней и так далее
Надеются, что это указует вам в правильном направлении. Если вы объявляете более одного экземпляра MonitoredNumberClass, вы должны создать другой обработчик событий для этого экземпляра, конечно.
Если у любого другого пользователя есть лучший способ, напишите свой собственный ответ.
Вместо 'Выхода Environment', используйте' End' остановиться близко всей программы.Если вы просто хотите выйти из подкаталога, используйте 'Exit Sub'. Если вы хотите выйти из цикла 'For .. Next',' Exit For' –
благодарим вас за ответ .... Но моя проблема не в том, чтобы выйти из среды, или вот так ... моя проблема - проверить значение переменной автоматически во время выполнения , – MDA
ОК. Какая переменная и вы хотите ее проверять с фиксированными интервалами или в определенных точках во время выполнения кода? –