I am having a problem with the UltraDateTimeEditor when it comes to entering the year. When I entering 2010, as soon as I hit the 2 it sets the year to 2002 instead of letting me me enter the rest of the date. Then, being it puts the cursor at the end of the year, I start to to delete the 02 in order to entere, 10, as soon as I delete the second digit out of the year it refills in the year with 2020. The only way I have found for me to enter the year 2010 after 2002 has been filled it is first delete the last 2 and replace it with a zero (so that year is now 2000) and then use the arrow keys or the mouse to get to the second 0 and then delete it and replace it with 1.
I am running the lastest service release (Version 20103.2037). I have this when the MaskInput is set to both {date} and {LOC}mm/dd/yyyy
It sounds like your mask is configured for a 2-digit representation of the year. In that scenario, the year component of the date is automatically "completed" based on the local machine's two year digit rule setting (determines how to resolve the century). I believe the ValueChanged event will fire as soon as the "2" is entered, because the year is then automatically resolved to 2002, but the text in the control does not change, so as to not hamper the user's efforts to continue entering characters. If you are doing something in response to ValueChanged that might explain it, but by default the control should not behave the way you describe here.
I also faced the same kind of problem. In my case I am using ultraDateTimeEditor as editor component of WinUltraGrid.When I set the mask input of that grid column as "{date}" it works fine. I place the cursor in between the year field ie(20|10) and press delete twice as soon as I leave the focus from that cell it replaces the deleted year with 20. so the year becomes 2020. But the problem is when i set mask input of the grid column as "{date} {time}". when i finish deleting the last char of the year it refills the first blank chars with 20 ( focus is still in ultraDateTimeEditor control ).
UltraGrid.DisplayLayout.Bands [ 0 ].Columns [ "FromDate" ].MaskInput = "{date}";
-- works fine
UltraGrid.DisplayLayout.Bands [ 0 ].Columns [ "FromDate" ].MaskInput = "{date} {time}";
-- works differently