Je ne suis pas un bon programmeur, c'est plutôt mon hobby. Alors s'il vous plaît ne me jugez pas pour être mauvais en programmation. Ceci est mon code actuel créé pour le compte à rebours.
int i = 000000;
private void timer1_Tick(object sender, EventArgs e)
{
{
i++;
textBox1.Text = i.ToString() + "00:00:00";
}
}
Quand j'exécute le chronomètre. alors le TextBox1 n'affiche pas 00:00:01, mais il affiche 100; 00; 00. Merci d'avoir lu mon message et encore une fois, désolé d'avoir de si mauvaises connaissances en programmation.
3 Réponses :
Je suggérerais d'utiliser Chronomètre pour cela. Il fera la magie dont vous avez besoin. Ici vous pouvez trouver un bon exemple d'utilisation de la classe Stopwatch en C # https://www.dotnetperls.com/stopwatch.
Veuillez le marquer comme réponse car il a résolu votre problème.
Eh bien non, non seulement ne résoudrait pas le problème immédiat (formatage), StopWatch n'a pas du tout de capacité de compte à rebours .
@MickyD, bien que l'utilisateur ait indiqué le compte à rebours en question, mais en regardant le code, il impliquait autre chose
@hessamhedieh C'est vrai. La réponse est un commentaire limite avec un lien vers un site étranger. Peut-être que si l'auteur améliore la réponse, je voterai :)
Ok, donc vous savez comment utiliser Tnx to @Juliet Wilson J'ai modifié la façon dont le temps est converti en chaîne Timer mais votre problème vient de string , lorsque vous utilisez + sur string vous les concaténez , alors dites que "bonjour" + "monde" est égal à "bonjour le monde" , donc quand vous concaté i avec 00:00:00 la sortie que vous voyez est très logique.
vous pouvez utiliser l'extrait ci-dessous pour atteindre votre objectif (remplacez simplement le contenu de votre classe de formulaire par ceci) private Timer _timer;
private Label _label;
private int _elapsedSeconds;
public Form1()
{
_timer = new Timer
{
Interval = 1000,
Enabled = true
};
_timer.Tick += (sender, args) =>
{
_elapsedSeconds++;
TimeSpan time = TimeSpan.FromSeconds(_elapsedSeconds);
_label.Text = time.ToString(@"hh\:mm\:ss");
};
_label = new Label();
Controls.Add(_label);
}
Edit
Bien que vous commenciez par une belle description du problème immédiat, votre solution de code est un peu compliquée. Pourquoi ne pas utiliser ToString () selon la réponse de Juliette au lieu du calcul fidly heure / min / sec?
@ shash678, merci pour le lien, mais ma convention de dénomination est tirée de Jetbrain resharper
vote défavorable supprimé. merci d'avoir amélioré votre réponse :)
Vous pouvez utiliser ceci:
TimeSpan time = TimeSpan.FromSeconds(i); textBox1.Text = time.ToString(@"hh\:mm\:ss");