Другой вариант - использовать TimeSpan.TryParseExact
.Это даст вам тот же результат, а также позволит вам легко получить значения времени как TimeSpan
с, чтобы вы могли использовать их для дальнейших вычислений или для их хранения где-нибудь, например.
Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
Dim validRange As Boolean = False
Dim time1, time2 As TimeSpan
Dim timeRanges As String() = TextBox1.Text.Split("/"c)
If timeRanges.Length = 2 Then
If TimeSpan.TryParseExact(timeRanges(0), "hh\:mm",
Globalization.CultureInfo.InvariantCulture, time1) AndAlso
TimeSpan.TryParseExact(timeRanges(1), "hh\:mm",
Globalization.CultureInfo.InvariantCulture, time2) Then
validRange = True
End If
End If
If validRange Then
' Use `time` and `time2` for anything you want.
Else
' TODO: Indicate to the user that they entered an invalid input.
e.Cancel = True
End If
End Sub
Редактировать:
Если вы не хотите вводить вручную :
и /
, вы можете использовать MaskedTextBox
вместо TextBox.
Сначала, после добавления MaskedTextBox на форму, установите для его свойства Mask
значение 00:00/00:00
:
![MaskedTextBox.Mask](https://i.stack.imgur.com/83sWW.png)
Затем вы можете настроить приведенный выше кодработать с MaskedTextBox следующим образом:
Private Sub MaskedTextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MaskedTextBox1.Validating
Dim validRange As Boolean = False
Dim time1, time2 As TimeSpan
Dim timeRanges As String() = MaskedTextBox1.Text.Split("/"c)
If MaskedTextBox1.MaskCompleted Then
If TimeSpan.TryParseExact(timeRanges(0), "hh\:mm",
Globalization.CultureInfo.InvariantCulture, time1) AndAlso
TimeSpan.TryParseExact(timeRanges(1), "hh\:mm",
Globalization.CultureInfo.InvariantCulture, time2) Then
validRange = True
End If
End If
If validRange Then
' Use `time` and `time2` for anything you want.
Else
' TODO: Indicate to the user that they entered an invalid input.
e.Cancel = True
End If
End Sub