3 votes

Comment éditer des valeurs de temps avec un contrôle UpDown en utilisant VB.NET ?

J'ai une minuterie avec une zone de texte affichant une valeur Timespan (durée). Lorsque j'arrête le timer, je veux modifier la valeur du Timespan avec un contrôle UpDown. Je veux quelque chose comme ceci :

enter image description here

Mais le contrôle ci-dessus est un datetimePicker dont la propriété Format est définie sur "Custom", la propriété CustomFormat sur "HH:mm:ss" et la propriété ShowUpDown sur true.

Il ne peut donc afficher que des valeurs de type date/heure.

Je veux qu'il affiche les valeurs de la durée (comme "32.23:59:59") et qu'avec le contrôle UpDown, on puisse éditer les secondes, les minutes, les heures ou les jours selon ce qui est marqué par le curseur.

Comment est-ce possible ?

Dois-je créer un contrôle personnalisé à partir de zéro ?

Merci d'avance.

Édité : Après beaucoup de réflexion et d'expériences, j'ai découvert que si le contrôle DomainUpDown disposait des méthodes SelectionStart et SelectionLength, il serait possible de modifier un TimeSpan à l'aide du contrôle DomainUpDown.

J'ai soumis une telle proposition sur le site Visual Studio UserVoice. Veuillez voter en faveur d'une telle fonctionnalité !

1voto

APrough Points 2641

Utilisez le DateTimePicker, mais définissez les propriétés suivantes

Format = Heure

ShowUpDown = True

Je pense que c'est ce que vous voulez.

Si vous voulez que les jours y figurent, il suffit de définir Format=Custom, et CustomFormat = "dd:HH:mm:ss".

0voto

hometoast Points 6536

Si vous tenez absolument à utiliser cette commande pour une "période", ET vous pouvez être sûr que cette période est inférieure à 24 heures,

ReadOnly baseDate As DateTime = New DateTime(2000, 1, 1)
Dim myTimeSpan As New TimeSpan
''// set value
DateTimePicker1.Value = baseDate.Add(myTimeSpan)
''// retrieve value
myTimeSpan = DateTimePicker1.Value.Subtract(baseDate)

mais il faut ensuite être capable de gérer ce qui se passe avec des durées supérieures à 24 heures ou des durées négatives.

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