3 votes

Changer l'heure sur MaskedTextbox

Je veux concevoir un temps changeant sur maskedtextbox dans mon application comme sur Windows où l'heure change à chaque seconde. J'ai défini maskedtexbox1 comme ci-dessous:

maskedTextBox1.Text = DateTime.Now.ToShortTimeString();

qui affiche l'heure courte actuelle du système mais elle ne change pas à chaque seconde comme Windows. Comment faire?

Je suis sur Visual Studio 2005 et .NET est inférieur à 3.5.

1voto

corlettk Points 5051

Je suppose que vous devrez configurer un minuteur qui met à jour votre maskedTextBox1 toutes les secondes.

Pour savoir comment faire, veuillez consulter : Ajouter un minuteur à une application Windows Forms

Santé. Keith.

1voto

Cuong Le Points 29324

Vous pouvez utiliser System.Windows.Forms.Timer pour mettre à jour la valeur du champ de texte toutes les secondes par exemple:

var timer = new Timer();
timer.Interval = 1000;

timer.Tick += delegate
            {
                textBox1.Text = DateTime.Now.ToLongTimeString();
            };

timer.Start();

1voto

Konrad Viltersten Points 4802

Je voudrais utiliser le minuteur et déclencher un événement toutes les secondes pour mettre à jour l'heure.

  1. Créer un minuteur (une instance de la classe Timer dans le package System.Windows.Forms).
  2. Définir sa fréquence à 1 seconde (c'est-à-dire 1000 millisecondes).
  3. Lui dire quelle méthode appeler quand il se déclenche (le gestionnaire d'événements Kaboom).

Quelque part dans votre code exécutable, vous le faites en tapant ce qui suit.

Timer ticker= new Timer();
ticker.Interval = 1000;
ticker.Tick += new EventHandler(Kaboom);

Dans la même classe (ou, si vous êtes confiant sur la manière de le faire, quelque part où vous pouvez atteindre le code), vous créez également le gestionnaire pour l'événement déclenché de ticking, de sorte que la promesse que vous avez faite sur une méthode à appeler lorsque le minuteur se déclenche soit respectée.

private void Kaboom(Object sender, EventArgs eventArgs)
{
  // Exécutez le code de tickabilité
  MaskedTextBox1.Text = DateTime.Now.ToShortTimeString();
}

N'oubliez pas non plus de réellement démarrer votre minuteur lorsque vous vous sentez prêt.

MyTimer.Start();

Tada!

ÉDITION:

Pour être exhaustif, je vais également copier une partie de la réponse de @CuaonLe (un seuil de compétence plus élevé et la nécessité de .NET 3.5 ou plus récent).

Timer timer = new Timer { Interval = 1000 };
timer.Tick += (obj, args) 
  => MaskedTextBox1.Text = DateTime.Now.ToLongTimeString();
timer.Start();

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