Mon problème est très simple mais je ne peux pas le résoudre, alors j’ai besoin de votre aide.
Le problème est que j’ai un bouton et une étiquette dans un formulaire, je veux simplement cliquer sur le bouton et voir le compte à rebours de l’étiquette de 10 à 0, puis le formulaire se ferme, si simple, quelqu’un peut-il m’aider avec cela?
BTW, ma vraie application est un formulaire qui affiche la vidéo en temps réel depuis ma webcam. L’idée est de cliquer sur le bouton, d’afficher le compte à rebours et, une fois l’opération terminée, l’application enregistre le cadre actuel sous forme d’image.
Merci en conseil!
En utilisant WindowsFormsApplication, vous pouvez le faire comme ceci:
public partial class Form1 : Form { public Form1() { InitializeComponent(); timer1.Enabled = false; // Wait for start timer1.Interval = 1000; // Second i = 10; // Set CountDown Maximum label1.Text = "CountDown: " + i; // Show button1.Text = "Start"; } public int i; private void button1_Click(object sender, EventArgs e) { // Switch Timer On/Off if (timer1.Enabled == true) { timer1.Enabled = false; button1.Text = "Start"; } else if (timer1.Enabled == false) { timer1.Enabled = true; button1.Text = "Stop"; } } private void timer1_Tick(object sender, EventArgs e) { if (i > 0) { i = i - 1; label1.Text = "CountDown: " + i; } else { timer1.Enabled = false; button1.Text = "Start"; } } }
Vous n’avez besoin que d’une étiquette, d’un bouton et d’une timer.
On dirait que vous avez probablement besoin de trois choses:
System.Windows.Forms.Timer
ou DispatcherTimer
selon le framework d’interface utilisateur que vous utilisez) Tick
du timer même qui décrémente le compteur, met à jour l’interface utilisateur et arrête le timer + prend un instantané si le compteur atteint 0 Vous pouvez faire tout cela sans autre fil.
utilisez ce code. mettez une timer, une étiquette et un bouton.
public partial class Form1 : Form { public Form1() { InitializeComponent(); timer1.Tick += new EventHandler(timer1_Tick); } private static int i = 10; private void button1_Click(object sender, EventArgs e) { label1.Text = "10"; timer1.Interval = 1000; timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { label1.Text = (i--).ToSsortingng(); if (i < 0) { timer1.Stop(); } } }