[C#] Hướng Dẫn Sử Dụng Count Down Timer Winform

Xin chào các bạn, bài viết hôm nay mình sẻ hướng dẫn các bạn sử dụng Count Download Timer dùng để đếm ngược thời gian trong lập trình C# Winform.

[C#] Using Count Down Timer

Countdown timer là gì ?

Countdown timer  đồng hồ đếm ngược. Bạn có thể sử dụng đồng hồ đếm ngược trên một trang website hay điện thoại di dộng của bạn.

Đồng hồ sẽ đếm ngược từ một số hoặc ngày nhất định để cho biết thời gian bắt đầu hoặc kết thúc một sự kiện.

Dưới đây là demo ứng dụng CountDown Timer khi mình click vào 20 phút thì sẽ đếm ngược thời gian.

count_down_timer_csharp

Đầu tiên mình tạo một class CountDownTimer.cs

using System; using System.Diagnostics; using System.Windows.Forms; namespace CountDownTimerDemo { public class CountDownTimer : IDisposable { public Stopwatch _stpWatch = new Stopwatch(); public Action TimeChanged; public Action CountDownFinished; public bool IsRunnign => timer.Enabled; public int StepMs { get => timer.Interval; set => timer.Interval = value; } private Timer timer = new Timer(); private TimeSpan _max = TimeSpan.FromMilliseconds(30000); public TimeSpan TimeLeft => (_max.TotalMilliseconds - _stpWatch.ElapsedMilliseconds) > 0 ? TimeSpan.FromMilliseconds(_max.TotalMilliseconds - _stpWatch.ElapsedMilliseconds) : TimeSpan.FromMilliseconds(0); private bool _mustStop => (_max.TotalMilliseconds - _stpWatch.ElapsedMilliseconds) < 0; public string TimeLeftStr => TimeLeft.ToString(@"\mm\:ss"); public string TimeLeftMsStr => TimeLeft.ToString(@"mm\:ss\.fff"); private void TimerTick(object sender, EventArgs e) { TimeChanged?.Invoke(); if (_mustStop) { CountDownFinished?.Invoke(); _stpWatch.Stop(); timer.Enabled = false; } } public CountDownTimer(int min, int sec) { SetTime(min, sec); Init(); } public CountDownTimer(TimeSpan ts) { SetTime(ts); Init(); } public CountDownTimer() { Init(); } private void Init() { StepMs = 1000; timer.Tick += new EventHandler(TimerTick); } public void SetTime(TimeSpan ts) { _max = ts; TimeChanged?.Invoke(); } public void SetTime(int min, int sec = 0) => SetTime(TimeSpan.FromSeconds(min * 60 + sec)); public void Start() { timer.Start(); _stpWatch.Start(); } public void Pause() { timer.Stop(); _stpWatch.Stop(); } public void Stop() { Reset(); Pause(); } public void Reset() { _stpWatch.Reset(); } public void Restart() { _stpWatch.Reset(); timer.Start(); } public void Dispose() => timer.Dispose(); } }

Và cách sử dụng truyền số phút vào ứng dụng

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CountDownTimerDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { CountDownTimer timer = new CountDownTimer(); timer.SetTime(Convert.ToInt32(txt_minute.Text), 0); timer.Start(); timer.TimeChanged += () => label1.Text = timer.TimeLeftMsStr; timer.CountDownFinished += () => label1.Text = "Finish!"; timer.StepMs = 77; } private void Form1_Load(object sender, EventArgs e) { } } }

Thanks for watching!

DOWNLOAD SOURCE

Tags: countdowntimer c#timer c#

THÔNG TIN TÁC GIẢ

Founder Founder 1311 bài viết 15,373,365
NGUYỄN THẢO

Founder at LaptrinhVB.net

★★★★★

♥ Tình yêu thương chẳng hề hư mất bao giờ. (Cr 13,4)

=========================================================================

My skills includes .NET(C#, VB.NET), DevExpress, Java, Android, PHP,

Python, Sqlserver, Mysql, Reactjs, Dart, Flutter, API services and lot more...

Phone/Zalo/Telegram/WhatsApp: ☎️ (+84)933.913122

Zalo: https://zalo.me/0933913122

Email: nguyenthao.laptrinhvb@gmail.com

My Github: https://github.com/nguyenthao1988

Facebook: https://fb.com/Lewandowski28031988

Youtube Channel: https://www.youtube.com/@thaomeotv

beer  

Buy me a cup of beer   Donate LaptrinhVB  

momo_nt        zalopay_image

buy_a_coffee

=========================================================================

BÀI VIẾT LIÊN QUAN

Từ khóa » Bộ đếm Thời Gian Trong C#