首页 文章

如何让DateTimePicker显示空字符串?

提问于
浏览
57

我希望能够显示默认值为nothing的 DateTimePicker ,即没有日期 .

例如,我有一个任务的开始日期 dtTaskStart 和结束日期 dtTaskEnd ,但结束日期未知,并且最初未填充 .

我已为两个控件指定了 yyyy-MM-dd 的自定义格式 .

将值设置为 null ,或者在运行时将空字符串设置为错误,那么如何实现此目的呢?

我曾考虑使用复选框来控制此字段的启用,但仍然存在显示初始值的问题 .

编辑:
可以说是问题DateTimePicker Null Value (.NET)的副本,但我找到的问题的解决方案不是该问题的解决方案,所以我认为它应该留在这里供其他人查找..

6 回答

  • 4

    这对我来说对c#有用

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

    好一个人!

  • 43

    只需按如下方式设置属性:

    当用户按“清除键”或“删除键”时

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

    DateTimePicker1_ValueChanged 事件做

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

    使用 CustomFormat 属性对值进行模糊处理,使用复选框 cbEnableEndDate 作为标志来指示其他代码是否应忽略该值:

    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
    
  • 5

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

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

    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
    
  • 20

    当我想显示一个空的日期值时,我这样做

    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;    
                }
    

    这允许您显示和使用空日期值,但仍允许用户能够根据需要将日期更改为某个内容 .

    请记住,sStrDate已经被验证为有效的日期字符串 .

  • 1

    其他人讲的基本概念也是如此 . 但是当你有多个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;
    

    值改变了事件功能

    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;
                }
            }
    

    未选中时
    enter image description here

    选中时
    enter image description here

相关问题