68 votes

Comment puis-je faire un DateTimePicker afficher une chaîne vide?

Je voudrais être en mesure d'afficher un DateTimePicker qui a une valeur par défaut de rien, c'est à dire pas de date.

Par exemple, j'ai une date de début dtTaskStart et une date de fin, dtTaskEnd pour une tâche, mais la date de fin n'est pas connu, et ne contient pas d'abord.

J'ai spécifié un format personnalisé de yyyy-MM-dd pour les deux contrôles.

Réglage de la valeur de null, ou une chaîne vide au moment de l'exécution provoque une erreur, alors comment puis-je accomplir?

J'ai pensé à utiliser une case à cocher pour contrôler l'activation de ce domaine, mais il y a toujours le problème d'affichage d'une valeur initiale..

Edit:
Sans doute un double de la question DateTimePicker Valeur Null (.NET), mais la solution que j'ai trouvé pour mon problème n'est pas une solution pour cette question, donc je pense qu'il doit rester ici pour les autres de trouver..

56voto

Sérgio Domingos Points 101

Il suffit de régler la propriété comme suit:

Lorsque l'utilisateur d'appuyer sur "bouton effacer" ou "touche " supprimer" n'

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

Sur DateTimePicker1_ValueChanged événement

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

28voto

brass-kazoo Points 8755

D'affaiblir la valeur à l'aide de l' CustomFormat de la propriété, à l'aide de la case cbEnableEndDate que le drapeau pour indiquer si d'autres code doit ignorer la valeur:

    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

22voto

David Swindells Points 258

cela a fonctionné pour moi pour c#

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

joli les gars!

5voto

Catherine Points 21

Dans le cas où quelqu'un a un problème avec la configuration de contrôle datetimepicker à vide pendant l'événement load du formulaire, puis d'afficher la date du jour en tant que de besoin, voici un exemple:

ASSUREZ-vous QUE CustomFormat = " " a le même nombre de places (au moins un espace) dans les deux méthodes

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 System.Object, ByVal e As 
                    System.EventArgs) Handles DateTimePicker.MouseHover

    Dim DateTimePicker As DateTimePicker

    DateTimePicker = CType(sender, DateTimePicker)
            If DateTimePicker.Text = "    " Then
        DateTimePicker.Text = Format(DateTime.Now, "MM/dd/yyyy")
    End If
End Sub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X