That's know/faced by few, look here
This is because you are setting it to null and resets to bad format.
Following has been shared working across:
Logic is to reset date to minimum and then use ValueChanged event to hide it in display using what you already tried.
private void DateTimePicker1_ValueChanged(object sender, EventArgs e)
if (dateTimePicker1.Value == DateTimePicker.MinimumDateTime)
dateTimePicker1.Value = DateTime.Now;
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = " ";
dateTimePicker1.Format = DateTimePickerFormat.Short;
private void Clear_Click(object sender, EventArgs e)
dateTimePicker1.Value = DateTimePicker.MinimumDateTime;