I have a DateTimePicker with ShowCheckBox = true on my winforms app. If I do this in the forms constructor:
DateFrom.Checked = true;
DateFrom.Value = DateTime.Today.AddDays(-7);
Then set DateFrom.Checked = false; in the FormShown event, it does what I would like, the text in the control defaults to 7 days before today, and the checkbox is unchecked.
If I try to only set the Value, the text stays as today. If I reset Checked = false anytime before the FormShown event, the text stays as today.
Now I’ve moved this code to a user control, so to use the same “hack” will require even more hacking, so at this point I’m hoping someone has an easier method. Maybe just another property I can set besides from Value that actually works? 🙂
I tried this also:
DateFrom.Text = DateTime.Today.ToString(DateFrom.CustomFormat);
Instead of setting the value, or in addition to it, to no avail.
Typical, I tried for hours before posting my question, then right after I thought it might somehow be related to the creation of the window handle. So I came up with this solution. Will still be happy to have something better, but this doesn’t seem to bad if I have to stay with this:
Checking Handle forces the window handle to be created, so then I’m able to uncheck the control without it defaulting to today’s date for the text when the window handle is created later. I just use Sleep(0) as a trick to make sure the compiler doesn’t optimize the code and compile it out all together (not sure if that would even happen, but like to be sure, and condition shouldn’t always be false so should never Sleep(0) anyway).