我怎样才能让一个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; } }
未选中时
当检查