J'ai toujours eu des problèmes avec le système. J'ai une application dans laquelle je relai sur DateTimePicker
valeurs pour beaucoup de calculs. Les dates sont généralement saisies dans ces commandes et les utilisateurs tapent des jours ou des mois à un seul chiffre sans les zéros en tête (c'est-à-dire 9/9/17 ou 10/6/17) et les contrôles terminent la date.La valeur de DateTimePicker n'est pas mise à jour lors de la saisie d'un nombre à un chiffre.
Cependant, lorsque cela se produit dans Validating
, Validated
, Leave
, ValueChanged
, etc événements, la DateTimePicker.Value
reflète la valeur de prévisualisation, avant la mise à jour.
Par exemple, le contrôle définit la date sur DateTime.Today
(06/09/2017) et l'utilisateur tape la valeur pour prévisualiser le mois sans les zéros en tête (5/09/2017). Dans ce cas, dans les événements prévisualisés, le DateTimePicker.Value
sera toujours le 06/09/2017, même s'il a été modifié. Il est important de préciser que si l'utilisateur tape la date avec des zéros en tête (05/09/2017), la valeur est correctement mise à jour dans l'événement.
La valeur est mise à jour correctement, et si je valide la valeur après ces événements (c'est-à-dire lorsque l'utilisateur clique sur un bouton), je peux voir la valeur mise à jour. Mais ce n'est pas ce qui est requis.
Dans l'exemple suivant, une autre commande dépendant de la valeur correcte est mal mise à jour.
private void nochesFormattedTextBox_Leave(object sender, EventArgs e)
{
fechaFinDateTimePicker.Value = fechaDateTimePicker.Value.AddDays(nochesFormattedTextBox.Text != "" ? int.Parse(nochesFormattedTextBox.Text) : 0);
}
Une aide?
Cela arrive également avec l'événement 'Validated' également. Cependant, la solution utilisait l'événement 'ValueChanged'. Merci! –