Sean
Sean

Reputation: 571

Masked Text Box removes preceeding zeros in date

I have a process which grabs the birthdate and from a data table and display them in a masked text box for viewing and editing

However when pushing the data into the textbox any preceding zeros get removed

For example 05/05/2005 would display as 55/20/05__

The masked Text box is set up as 00/00/0000

The line which assigns the code is:

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

To date I have tried the following:

Does anyone have any other suggestions?

Upvotes: 0

Views: 3877

Answers (4)

Mike Lynch
Mike Lynch

Reputation: 11

I had the same problem with Masked a Text Box control that was added at runtime. I was just trying to add the date of the day to the control

Visual studio 2013

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

Problem was solved by using

tbox_ShipDate.Text = Format(Today, "MM/dd/yyyy")

seemed to simple but all worked well

Upvotes: 0

Sean
Sean

Reputation: 571

I think I am going to have to put this in "Mysteries of the Unexplained " box.

At the advice of another developer I manually recreated the form, re-added all the controls and it now works fine (copy and pasting all the controls from one form to another caused the issue to come with it).

I really don't know how to even recreate the issue must be something in the forms design level code???

Anyway thanks for all the assistance from everyone.

Upvotes: 1

Jeff
Jeff

Reputation: 46

I've been able to replicate the problem but currently there doesn't seem to be a solution. What you need is a binding navigator toolbar on the top of your form with your data bound masked text box with any mask (doesn't matter which one). When you run the form, initially the masked text box will accept the data just fine. However, if you click the "AddNewItem" button (the plus sign button) on your binding navigator toolbar, it will cause the masked text box to delete all preceding zeros when you try to enter a date. It seems all masks will do this. Rebuilding the form won't fix it, either. It happens every time you hit the "AddNewItem" button and then proceed to enter data into any formatted masked text box.

Now that I've found out exactly how to replicate the problem, hopefully someone more knowledgeable can come along to figure out how to circumvent this. It seems like it is a glitch within VB. Don't know if this constitutes as an actual "answer" but I have provided a clear path to finding a solution. I just don't have the know-how to get that far.

(Update: I discovered that it does this to all masks, not just "short date" masks)

Upvotes: 3

Wilhelm
Wilhelm

Reputation: 1886

Try converting the Datatable data to date and back:

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

My guess is that either the database is sending the date in a format you don't expect, you changed the control's Culture (under Behaivior properties), or that you changed the way your computer shows dates and thus changed its culture. However I try I can't replicate the problem with my culture settings.

Upvotes: 0

Related Questions