У меня вопрос по форматированию текста для 24-часового времени.

Мне нужен всегда следующий формат: 00:00

Как сделать так, чтобы знак «:» появлялся сразу после ввода второй цифры, поскольку это необходимо для отделения часов от минут, а также как заставить 0 появляться для любых чисел до 9 включительно?

Примеры: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09.

Эти нули необходимы, но могут ли они быть забыты пользователем, вводя их в текстовое поле?

0
glen 30 Авг 2011 в 10:24

2 ответа

Лучший ответ

Используйте MaskedTextBox. Вы можете установить для свойства .Mask значение "00:00", и поле будет выглядеть как _ _ : _ _, пока пользователь вводит время (поэтому оно не появится после второй цифры, но будет всегда буду там как проводник).

Чтобы убедиться, что часы находятся в пределах 0–23, а минуты - от 0 до 59, используйте метод Validating (подробности см. В [этом сообщении MSDN]).

0
jonsca 30 Авг 2011 в 08:55

Если вы хотите: тоже, используйте эту версию. Добавьте 0, если пользователь вводит любое число> 3 (0, 1 и 2 могут быть 2-значными часами)

  Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    If TextBox1.Text.Length() = 2 Then
        TextBox1.Text &= ":"
        TextBox1.SelectionStart = TextBox1.Text.Length()
    End If
    If TextBox1.Text.Length() = 1 AndAlso TextBox1.Text > "2" Then
        TextBox1.Text = "0" & TextBox1.Text
        TextBox1.SelectionStart = TextBox1.Text.Length()
    End If
  End Sub
  Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    If e.KeyChar = vbBack AndAlso TextBox1.Text.Length() = 3 Then
        TextBox1.Text = TextBox1.Text(0)
        e.Handled = True
    End If
End Sub
0
Martin 30 Авг 2011 в 09:31