我怎样才能让一个DateTimePicker显示一个空string?

我希望能够显示一个DateTimePicker的默认值是什么,即没有date。

例如,我有一个任务的开始datedtTaskStart和一个结束datedtTaskEnd ,但结束date不知道,最初没有填充。

我已经为这两个控件指定了一个自定义的yyyy-MM-dd格式。

将该值设置为null ,或者在运行时设置一个空string会导致错误,那么我该如何实现?

我已经考虑使用checkbox来控制这个字段的使能,但是仍然存在显示初始值的问题。

编辑:
可以说是DateTimePicker空值(.NET)的问题的重复,但我发现我的问题的解决scheme不是解决这个问题,所以我认为它应该留在这里为其他人find..

只需设置属性如下:

当用户按“清除button”或“删除键”来做

 dtpData.CustomFormat = " " 'An empty SPACE dtpData.Format = DateTimePickerFormat.Custom 

DateTimePicker1_ValueChanged事件做

 dtpData.CustomFormat = "dd/MM/yyyy hh:mm:ss" 

使用CustomFormat属性对值进行混淆,使用checkboxcbEnableEndDate作为标志来指示其他代码是否应该忽略该值:

 If dateTaskEnd > Date.FromOADate(0) Then dtTaskEnd.Format = DateTimePickerFormat.Custom dtTaskEnd.CustomFormat = "yyyy-MM-dd" dtTaskEnd.Value = dateTaskEnd dtTaskEnd.Enabled = True cbEnableEndDate.Checked = True Else dtTaskEnd.Format = DateTimePickerFormat.Custom dtTaskEnd.CustomFormat = " " dtTaskEnd.Value = Date.FromOADate(0) dtTaskEnd.Enabled = False cbEnableEndDate.Checked = False End If 

这对我工作的C#

 if (enableEndDateCheckBox.Checked == true) { endDateDateTimePicker.Enabled = true; endDateDateTimePicker.Format = DateTimePickerFormat.Short; } else { endDateDateTimePicker.Enabled = false; endDateDateTimePicker.Format = DateTimePickerFormat.Custom; endDateDateTimePicker.CustomFormat = " "; } 

不错的一个家伙!

如果有任何人在将表单加载事件期间将datetimepicker控件设置为空白的问题,然后根据需要显示当前date,这里是一个示例:

请确认CustomFormat = " "在两个方法中具有相同数量的空格(至less一个空格)

 Private Sub setDateTimePickerBlank(ByVal dateTimePicker As DateTimePicker) dateTimePicker.Visible = True dateTimePicker.Format = DateTimePickerFormat.Custom dateTimePicker.CustomFormat = " " End Sub Private Sub dateTimePicker_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles dateTimePicker.MouseHover Dim dateTimePicker As DateTimePicker = CType(sender, DateTimePicker) If dateTimePicker.Text = " " Then dateTimePicker.Text = Format(DateTime.Now, "MM/dd/yyyy") End If End Sub 

当我想显示一个空的date值,我这样做

  if (sStrDate != "") { dateCreated.Value = DateTime.Parse(sStrDate); } else { dateCreated.CustomFormat = " "; dateCreated.Format = DateTimePickerFormat.Custom; } 

然后当用户点击控制我有这个:

  private void dateControl_MouseDown(object sender, MouseEventArgs e) { ((DateTimePicker)sender).Format = DateTimePickerFormat.Long; } 

这使您可以显示和使用空的date值,但仍然允许用户能够将date更改为他们想要的东西。

请记住,sStrDate已被validation为有效的datestring。

其他的基本概念也是一样的。 但是当你有多个dateTimePicker的时候更容易实现。

 dateTimePicker1.Value = DateTime.Now; dateTimePicker1.ValueChanged += new System.EventHandler(this.Dtp_ValueChanged); dateTimePicker1.ShowCheckBox=true; dateTimePicker1.Checked=false; dateTimePicker2.Value = DateTime.Now; dateTimePicker2.ValueChanged += new System.EventHandler(this.Dtp_ValueChanged); dateTimePicker2.ShowCheckBox=true; dateTimePicker2.Checked=false; 

值改变了事件function

  void Dtp_ValueChanged(object sender, EventArgs e) { if(((DateTimePicker)sender).ShowCheckBox==true) { if(((DateTimePicker)sender).Checked==false) { ((DateTimePicker)sender).CustomFormat = " "; ((DateTimePicker)sender).Format = DateTimePickerFormat.Custom; } else { ((DateTimePicker)sender).Format = DateTimePickerFormat.Short; } } else { ((DateTimePicker)sender).Format = DateTimePickerFormat.Short; } } 

未选中时 在这里输入图像说明

当检查 在这里输入图像说明