Datetimepicker validating event
The Date Time Picker control allows selecting a date and time by editing the displayed values in the control.If you click the arrow in the Date Time Picker control, it displays a month calendar, like a combo box control.The Min Date and the Max Date properties allow you to put limits on the date range.
I've discovered an odd behavior of the Date Time Picker which I frankly think is a bug in the control.
I'm working in VB 2003, but I've verified this happens in VB 2005 as well.
You've found a workaround - using Lost Focus - when using the DTP as a stand alone control. In the context of a custom column in a datagrid, about the only alternative I can suggest to "user education" is to shift data validation from the cell level to the row level (i.e.
when current row changes so that the whole record would be sent to the datatable, or before an .
But the fact that it doesn't fire until after the Validating event means there is no way to validate such input--when Validating fires, the old value is still present as the . The only way I can find to have a subroutine run after the value has truly changed is to put something in Lost Focus. However, I seem to be out of luck in one use: putting a custom Date Time Picker control into a Data Grid Column Style. url=/library/en-us/cpref/html/frlrfsystemwindowsformsdatagridcolumnstyleclasstopic.asp, which for everything else seems to be doing a good job.
But if a single-digit day or month is entered and then the user leaves the DTP, the change is lost.The form in design view: Add the following code in the code editor window: Public Class Form1 Private Sub Form1_Load(sender As Object, e As Event Args) Handles My Base. I can make a Date Time Picker so that it shows a checkbox to enable / disable the date.2 digits in a cell which will take 2 digits) or when a new cell is moved to (e.g.from day to month, or from a value cell to a place holder cell) and committal of the whole thing occurs when focus moves out of the control.The user can make selection by clicking the required date.The new selected value appears in the text box part of the control. (The value isn't changed before the Commit method fires.) Further experimenting indicates that if one types either a leading zero or a trailing slash (to make a two-digit day/month or to indicate the end of the day/month and moving on to the next part of the date), that will fire the Value Changed event. I agree that it's probably a bug (or a pretty radical design flaw).Is my only solution user education to do one of those things, or is there another way to get the value changed before Validating/Commit fires? The control is, I reckon, composed of various sub-controls.Try using a custom format with a single marker for the day and the month. For me, that fires value changed with a single digit entry before validation fires. Using the analogy of a datagrid's rows, the movement from cell to cell within a row "commits" an edit to the cell that has just been left, and any move to a new row both "commits" the cell that has just been left and then "commits" the whole row that has just been left.I haven't tested it with a Date Time Picker in a Data Grid Column Style, but I can't offhand think why it should be different. Roger On second thoughts, I don't think the behaviour with a custom format is any different from with any other. In the analogous DTP situation cell-level committal seems to occur either when a cell is "full" (i.e.