Ничто не должно мешать вам использовать значения из текстового поля на одной вкладке на другой вкладке.
Скажем, например, что текстовое поле, содержащее мили на галлон, имеет значение mpg и находится в форме 2, вы должны иметь возможностьwrite:
Dim milesPerGallon As Decimal
' Ensure the value is numeric before trying to use it
If IsNumeric(mpg.Text) Then
milesPerGallon = CDec(mpg.Text)
Else
' Do something here
End If
Обратите внимание, что вы должны попытаться проверить содержимое текстового поля, прежде чем пытаться преобразовать его.
Также очень важно добавить следующие параметры в самый верхВаш файл исходного кода:
Option Explicit On
Option Strict On
Это поможет, если у вас есть немного разные имена для переменных и вы их не замечаете.Без явной опции VB автоматически создаст переменные, которые не объявлены, что может нанести ущерб вашему коду.
Параметр строгое предписывает корректность типов данных в вашем коде.Без этого VB будет пытаться автоматически изменить переменные на те, которые, по его мнению, являются правильными типами, но это не всегда правильно.
Обратите внимание, что вы также можете применить эти настройки для всего проекта, щелкнув правой кнопкой мыши напроект, выбрав Properties
, нажав на вкладку Compile
, выбрав All Configurations
из Configuration dropdown
и выбрав On
из выпадающих списков Option explicit
и Option strict
.
Обновление для нового кода в вопросе
Учитывая следующий код в вопросе:
Dim Mpg As Decimal
Dim milespergallon As Decimal
milespergallon = CDec(Mpg.Text)
' Ensure the value is numeric
If IsNumeric(Mpg) Then
Mpg = CDec(Mpg)
Else
milespergallon = CDbl(Mpg.Text)
End If
Где-то есть опечатка, потому что Mpg объявлен как локальная переменная типа Decimal,поэтому у него не будет свойства .Text.Я подозреваю, что это вызывает по крайней мере некоторые проблемы.
Вот как я бы переписал этот блок кода, предполагая, что Mpg - это имя текстового поля на tab2:
Dim milespergallon As Decimal
' Ensure the value is numeric
If Not IsNumeric(Mpg.Text) Then
milespergallon = 0
Else
milespergallon = CDec(Mpg.Text)
End If
Обновление
Вот как я бы переписал ваш код нажатия кнопки:
Dim mileage As Integer
Dim speed As Integer
If IsNumeric(Me.Miles.Text) Then
mileage = CInt(Me.Miles.Text)
End If
If IsNumeric(Me.SpeedTextBox.Text) Then
speed = CInt(Me.SpeedTextBox.Text)
End If
If speed <> 0 Then
Traveltime = CDec(mileage / speed)
Else
Traveltime = 0
End If
txttraveltime.text = Traveltime.ToString