How to alter a .NET DateTimePicker control to allow enter null values?

被刻印的时光 ゝ 提交于 2019-11-27 09:02:27

Here is an interesting article on CodeProject. The author has overridden the Value property to accept Null value as DateTime.MinValue, while maintaining the validation of MinValue and MaxValue of the standard control. That's all there's to it.

Jan Obrestad

You don't need to modify it to do this.

The DateTimePicker in .net actually has a checkbox built-in.

Set the ShowCheckBox property to true.

Then you can use the Checked property to see if the user has entered a value.

http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.showcheckbox(VS.80).aspx

Placing an additional checkbox labeled something like "enable notification" that enables / disables the DateTimePicker.

Tri's solution did not quite cut it for me and so thought Mr. Grazioli and he did something about it: http://www.codeguru.com/csharp/csharp/cs_controls/custom/article.php/c9645

I posted my long way around solution, which has some findings in the code comments about the peculiar issues with this control:

DateTime Picker null value

Set the ShowCheckBox property to true. Then you can use the Checked property as follows:

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            DateTimePicker thisDateTimePicker = (DateTimePicker)sender;
            if (thisDateTimePicker.Checked == false)
            {
                thisDateTimePicker.CustomFormat = @" "; //space
                thisDateTimePicker.Format = DateTimePickerFormat.Custom;
            }
            else
            {
                thisDateTimePicker.Format = DateTimePickerFormat.Short;
            }
        }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!