Masked Textbox在日期中删除前面的零

时间:2010-01-08 17:54:40

标签: vb.net visual-studio-2008 .net-3.5

我有一个抓取生日和数据表的过程,并将其显示在蒙面文本框中以供查看和编辑

然而,当将数据推入文本框时,任何前面的零都会被删除

例如05/05/2005将显示为55/20/05 __

屏蔽的文本框设置为00/00/0000

分配代码的行是:

MaskedTextBox.Text = Format(DataTable(0)("DOB"), “MM/dd/yyyy”).ToString

迄今为止,我尝试过以下方法:

  • 删除并重新添加控件
  • 从其他表单复制蒙面文本框 在同一个程序中
  • 以上蒙面文本框抓取相同内容 来自同一数据库的信息 表和格式正好 同样有效
  • 尝试过各种不同的格式 包括没有格式全部相同 结果

有没有人有任何其他建议?

4 个答案:

答案 0 :(得分:2)

我已经能够复制问题,但目前似乎没有解决方案。你需要的是一个绑定导航器工具栏在你的表单顶部与你的数据绑定屏蔽文本框与任何掩码(无关紧要)。运行表单时,最初屏蔽的文本框将接受数据。但是,如果单击绑定导航器工具栏上的“AddNewItem”按钮(加号按钮),则在尝试输入日期时,将导致屏蔽文本框删除所有前面的零。似乎所有面具都会这样做。重建表单也不会修复它。每次点击“AddNewItem”按钮然后继续将数据输入任何格式化的蒙版文本框时都会发生这种情况。

现在我已经确切地知道如何复制问题了,希望有更多知识渊博的人可以找出如何规避这个问题。好像这是VB内的一个小故障。不知道这是否构成了实际的“答案”,但我提供了寻找解决方案的明确途径。我只是没有这方面的专业知识。

(更新:我发现它对所有面具都这样做,而不仅仅是“短日期”面具)

答案 1 :(得分:1)

我想我将不得不把它放在“无法解释的奥秘”框中。

在另一位开发人员的建议下,我手动重新创建了表单,重新添加了所有控件,它现在工作正常(将所有控件从一个表单复制并粘贴到另一个表单导致问题随之而来)。

我真的不知道如何重新创建问题必须是表单设计级别代码中的东西???

无论如何,感谢所有人的帮助。

答案 2 :(得分:0)

尝试将Datatable数据转换为日期并返回:

MaskedTextBox.Text = Date.Parse(DataTable(0)("DOB")).ToString("MM/dd/yyyy")

我的猜测是数据库是以您不期望的格式发送日期,您更改了控件的文化(在Behaivior属性下),或者您更改了计算机显示日期的方式,从而改变了其文化。但是我试着用文化设置复制问题。

答案 3 :(得分:0)

我遇到了与运行时添加的Masked文本框控件相同的问题。我只是想把当天的日期添加到控件

Visual Studio 2013

Dim Today As Date = Now.Date
tbox_ShipDate.Text = FormatDateTime(Today,DateFormat.ShortDate) 'Failed every time

使用

解决了问题
tbox_ShipDate.Text = Format(Today, "MM/dd/yyyy")

似乎很简单,但都运作良好