文本格式化文本框以符合时间 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的主要内容,如果未能解决你的问题,请参考以下文章