【问题标题】:Keeping Leading Zeros in a Textbox在文本框中保留前导零
【发布时间】:2018-05-26 13:50:11
【问题描述】:

我需要在用于将数据输入数据库的文本框中保持前导零。它适用于 SKU 编号。我需要能够输入前导零(例如 001234567890),然后将它们输入数据库。

但是我不知道如何将前导零保留为双精度。我不需要字符串格式,而是双精度。有没有办法在保持数字而不是字符串的同时做到这一点?

EX.

txtProductBarcode.Text = Format(txtProductBarcode.Text, "############")
'This does not work

【问题讨论】:

  • 你已经用 3 种不同的语言标记了这个:你可能想把它缩小一点......
  • 这是vb.net。我包括这些是因为我知道有时代码可能是相同的。
  • 如果您需要前导零,通常最好将其保留为字符串。您是否/有什么理由想将其保留为替身?

标签: vb.net textbox


【解决方案1】:

使用0 代替# 将导致输出前导零。

例如:

Dim s as string = string.Format("{0:000###}", 12345d)
Console.WriteLine(s)

会输出

012345

请参阅 MSDN 上的 Pad a Number with Leading Zeros

顺便说一句,不知道为什么您担心在“作为双倍”时保留前导零。双精度只是双精度,显示格式无关紧要。 0123 与 123 相同,否则您应该使用字符串数据类型而不是双精度。

【讨论】:

  • 我需要它的两倍,因为我正在使用该输入并将其添加到数据库表中。该列是双列。我不只是展示它。
  • 所以.....您想在数据库中保留前导零,但将数据类型保留为双精度值?
  • 我改变了它我不想重做我的整个数据库但我修复了它。
  • @daniel.porter 你使用的是什么数据库服务器?
【解决方案2】:

试试这个。 您可以将整数 num 转换为 double。

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    Dim num As Integer
    Dim temp As String = ""
    Try
       If Regex.IsMatch(TextBox1.Text, "^[0-9 ]+$") Then
          num = Integer.Parse(TextBox1.Text)
          If num <> 0 then
             TextBox1.Text = num.ToString("D6")
             temp = num
          else
             TextBox1.ReadOnly = False
          End If
          If num.Length = 6 Then
             TextBox1.ReadOnly = True
             TextBox1.BackColor = Color.White
          ElseIf num = 0 Then
             TextBox1.ReadOnly = False
          End If
          TextBox1.SelectionStart = TextBox1.Text.Length
       End If
    Catch ex As Exception
       Msgbox(ex.Message)
    End Try
End Sub

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多