文本格式化文本框以符合时间 vb.net

Posted

技术标签:

【中文标题】文本格式化文本框以符合时间 vb.net【英文标题】:Text formatting textbox to conform with time vb.net 【发布时间】:2020-04-05 16:25:07 【问题描述】:

我有以下代码,我试图用它来格式化文本以符合(基于时间的)分钟,我想我稍后也会在几秒钟内重复使用它。首先,我想确定我的分钟在 0-59 的范围内(这部分工作正常)然后我想获得从 0-9 的所有分钟,如果他们有一个数字的例子是 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

【问题讨论】:

为什么不直接使用DateTimePicker 并将CustomFormat 设置为“mm:ss”?将Value设置为Date.MinValue,然后默认显示“00:00”,您可以从myDateTimePicker.Value.TimeOfDay获取TimeSpan的实际值。您还可以将 ShowUpDown 设置为 True 以使用微调器按钮而不是日历下拉菜单。 或一个 MaskedTextBox。 【参考方案1】:

你说:

...如果由于某种原因用户输入了 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 或时间选择器控件等。

您在代码中面临的问题与 VB 中比较字符串的方式有关。查看here 了解更多信息。如果您阅读并理解了文章的“比较字符串”部分,那么您将在代码中看到问题。

希望这会有所帮助。

【讨论】:

以上是关于文本格式化文本框以符合时间 vb.net的主要内容,如果未能解决你的问题,请参考以下文章

敲除绑定文本框以选择文本

将多行绑定到文本框以进行编辑+更新

发送 VB.NET 后电子邮件不保持格式

Excel VBA文本框以填充组合框

所有者绘制文本框以在 WinForms 中使用

用 CSS 扩展文本框以适应其内容?