Текстовое поле для форматирования текста, чтобы соответствовать времени vb.net - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующий код, с помощью которого я пытаюсь отформатировать текст, чтобы он соответствовал минутам (по времени), и я полагаю, что я буду использовать это и в течение нескольких секунд позже. сначала я хочу установить sh, что мои минуты находятся в диапазоне 0-59 (эта часть работает нормально), затем я хочу получить все минуты в диапазоне от 0-9, и если у них один пример di git равен 0 , 1,2,3,4,5 и т. Д. Я хочу добавить префикс 0, чтобы они затем стали 01,02,03,04,05 и т. Д. Это - то, где моя проблема начинается сначала, если пользователь вводит 01, что 01 становится 001, и если по какой-то причине пользователь вводит 10, то 10 также становится 01, может кто-нибудь помочь мне распутать эту проблему?

   Private Sub TextBox13_Leave(ByVal sender As Object, ByVal e As EventArgs) Handles TextBox13.Leave

   If IsNumeric(TextBox13.Text) Then
        If TextBox13.Text >= CStr(0) Or TextBox13.Text <= CStr(59) Then

            If TextBox13.Text <= CStr(9) Then
                TextBox13.Text.Replace("0", "")
                TextBox13.Text = ("0" & TextBox13.Text)
            Else
                'do nothing formatiing is okay
            End If

        Else
            TextBox13.Text = "00"
        End If
    Else
        TextBox13.Text = "00"
    End If

    'If TextBox13.Text <= CStr(-1) Or TextBox13.Text >= CStr(61) Or TextBox13.Text = Nothing Then
    '    TextBox13.Text = "00"
    'ElseIf TextBox13.Text >= CStr(1) Or TextBox13.Text <= CStr(9) Then
    '    TextBox13.Text.Replace("0", "A")
    '    TextBox13.Text = "0" & TextBox13.Text
    'ElseIf TextBox13.Text = "0" Then
    '    TextBox13.Text = "00"
    'End If

    Call MyNewEndDurration()

End Sub

1 Ответ

0 голосов
/ 07 апреля 2020

Вы говорите:

... и если по какой-то причине пользователь вводит 10, то 10 также становится 01

Это потому, что вы удаляете "0" в вашем коде с:

TextBox13.Text.Replace("0", "")

В любом случае, в вашем коде много проблем, поэтому давайте попробуем немного другой подход:

If IsNumeric(TextBox13.Text) Then
  'First let's get the contents of TextBox13 as a number
  Dim s as Integer = Convert.toInt32(TextBox13.Text)
  'Then let's use s for the rest
  If s < 0 Or s > 59 Then s = 0

  TextBox13.Text = s.ToString("00")
End If

Конечно, есть лучшие способы достигните того, чего хотите, например, с помощью MaskedTextBox или текстового поля Up Down с ограничением по значению от 0 до 59 или с помощью элемента выбора времени и т. д. c.

Проблемы, с которыми вы сталкиваетесь в своем коде, должны делать с тем, как строки сравниваются в VB. Посмотрите здесь для получения дополнительной информации. Если вы прочтете и поймете раздел « Сравнение строк » этой статьи, вы увидите проблему в своем коде.

Надеюсь, это поможет.

...